2017-08-30 63 views
0

我試圖在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 

正如你所看到的,我還有很長的路要走。但我的第一個問題是如何只增加輸入的最後幾位。

回答

0

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 –

1

使用可變擴展和算術擴展

ip2=${ip1%.*}.$((${ip1##*.}+1)) 
  • ${ip1%.*}刪除最短的後綴。*(最後一位數字)
  • ${ip1##*.}消除了最大的前綴*。 (除了最後一位數字)
+0

變量這這會給'192.168.011 ' - 錯過'.' – RomanPerekhrest

+0

與解釋 –

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 
相關問題