使用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//\./ }任何帮助或建议都是明确的!
发布于 2009-04-16 03:18:51
实际上,这个脚本有几个问题。主要的一点是,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因此,您需要注意这一点。
我对简化输出以打动管理层并不陌生:-)。
有用的代码片段:
脚本顶部的"set -x" (未注释时)是查找此类错误的理想工具。它在所有替换之后但在执行之前输出每一行,这样您就可以确切地看到发生了什么。
发布于 2009-04-17 01:07:01
我尝试了几种不同的组合。下面的方法对我很有效。set -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//\./}https://stackoverflow.com/questions/754488
复制相似问题