+1输入字符串在bash脚本中的+1

+1输入字符串在bash脚本中的+1

问题描述:

我试图在bash中使脚本一次ping到地址。 该地址始终为1,用户键入的地址为1。+1输入字符串在bash脚本中的+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 

正如你所看到的,我还有很长的路要走。但我的第一个问题是如何只增加输入的最后几位。

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

+0

更新,这将失败,如果最后一个字节是255 –

使用可变扩展和算术扩展

ip2=${ip1%.*}.$((${ip1##*.}+1)) 
  • ${ip1%.*}删除最短的后缀。*(最后一位数字)
  • ${ip1##*.}消除了最大的前缀*。 (除了最后一位数字)
+0

变量这这会给'192.168.011 ' - 错过'.' – RomanPerekhrest

+0

与解释 –

您需要单独处理您的ip1字节:

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.11