使用cygwin并编写脚本来显示我当前的ip地址减去2.由于某种原因,它给了我以下错误:“)语法错误:无效算术运算符(错误标记为”
这是我正在使用的脚本。
$ cat test3.sh
#!/bin/bash
#
function IPADDRESS {
v=$4
echo $1.$2.$3.$((v-2))
}
ADDRESS=$(ipconfig | grep Address | cut -f2 -d :)
# echo $ADDRESS
IPADDRESS ${ADDRESS//\./ }
任何帮助或建议都是适用的!
答案 0 :(得分:4)
你真的遇到了一些问题。主要的一点是ipconfig将在行尾输出“\ r”字符,这会影响计算。
另一个原因是您不允许使用多个NIC,因此添加了"head -1"
。您需要更智能地选择想要的NIC。
最后,我从IP地址的前面剥离了前导空格(实际上是所有空格)。
以下适用于我:
#!/bin/bash
#set -x
function IPADDRESS {
((v = $4 - 2))
echo $1.$2.$3.$v
}
ADDRESS=$(ipconfig | grep Address | head -1 | cut -f2 -d: | sed 's/[ \r]//g')
echo $ADDRESS
IPADDRESS $ADDRESS
输出:
192.168.91.7
192.168.91.5
实际上,我的版本输出如下:
192.168.91.1
192.168.91.-1
所以你需要注意这一点。
我对输出打动/哄骗管理并不陌生: - )。
有用的SNIPPET:
脚本顶部的"set -x"
(未注释时)非常适合查找这些类型的错误。它在所有替换之后但在执行之前输出每一行,以便您可以确切地看到正在发生的事情。
答案 1 :(得分:0)
我尝试了几种不同的组合。以下对我有用。设置-x确实有帮助。再次感谢。
#!/bin/bash
#set -x
function IPADDRESS {
v=$4
echo $1.$2.$3.$((v-2))
}
ADDRESS=$(ipconfig | grep Address | head -1 | cut -f2 -d: | sed 's/[ \r]//g')
IPADDRESS ${ADDRESS//\./}