我正试图在bash中立即编写到ping to addresses的脚本。用户输入的广告总是比用户输入的多1。
例:什么是ip? 192.168.0.10
程序应该是ping 192.168.0.10和192.168.0.11。最后,它应该提供ping输出。
在ip的最后一个数字上,我有问题。我的代码:
#!/bin/bash
# Script for å pinge to lokasjoner samtidig.
read input
echo $input
ip1=$input
let "ip2=$input+1"
echo $ip1
echo $ip2如你所见,我还有很长的路要走。但我的第一个问题是如何只增加输入的最后一个数字。
发布于 2017-08-30 08:50:47
Awk备选方案:
ip="192.168.0.10"
ip2=$(awk -F\. '{ print $1"."$2"."$3"."$4+1 }' <<< $ip )
echo $ip2
192.168.0.11将原始ip地址读入awk并用“”分隔字段。将1添加到最后一个字段,然后将其设置为变量ip2
发布于 2017-08-30 08:27:24
使用变量展开和算术扩展
ip2=${ip1%.*}.$((${ip1##*.}+1))${ip1%.*}删除最短的后缀.* (最后一个数字)${ip1##*.}删除最大的前缀*。(除最后一个数字外)发布于 2017-08-30 08:29:51
您需要分别处理您的ip1 octets:
part1=${ip1%.*}"." # first 3 octets (with trailing separator `.`)
part2=${ip1##*.} # last octet
ip2=$part1$[$part2+1]
printf "%s\n%s\n" $ip1 $ip2示范性产出:
192.168.0.10
192.168.0.11https://stackoverflow.com/questions/45955377
复制相似问题