首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >+1在bash脚本中的IPv4输入字符串上

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

Stack Overflow用户
提问于 2017-08-30 08:19:52
回答 3查看 1.1K关注 0票数 0

我正试图在bash中立即编写到ping to addresses的脚本。用户输入的广告总是比用户输入的多1。

例:什么是ip? 192.168.0.10

程序应该是ping 192.168.0.10和192.168.0.11。最后,它应该提供ping输出。

在ip的最后一个数字上,我有问题。我的代码:

代码语言:javascript
复制
#!/bin/bash
# Script for å pinge to lokasjoner samtidig.

read input
echo $input
ip1=$input

let "ip2=$input+1"

echo $ip1
echo $ip2

如你所见,我还有很长的路要走。但我的第一个问题是如何只增加输入的最后一个数字。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-30 08:50:47

Awk备选方案:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-08-30 08:27:24

使用变量展开和算术扩展

代码语言:javascript
复制
ip2=${ip1%.*}.$((${ip1##*.}+1))
  • ${ip1%.*}删除最短的后缀.* (最后一个数字)
  • ${ip1##*.}删除最大的前缀*。(除最后一个数字外)
票数 3
EN

Stack Overflow用户

发布于 2017-08-30 08:29:51

您需要分别处理您的ip1 octets:

代码语言:javascript
复制
part1=${ip1%.*}"."     # first 3 octets (with trailing separator `.`)
part2=${ip1##*.}       # last octet
ip2=$part1$[$part2+1]

printf "%s\n%s\n" $ip1 $ip2

示范性产出:

代码语言:javascript
复制
192.168.0.10
192.168.0.11
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45955377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档