Math 无效算术运算符

Math 无效算术运算符,math,cygwin,Math,Cygwin,使用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 ${ADDR

使用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//\./ }

欢迎提供任何帮助或建议!

该脚本实际上存在一些问题。主要问题是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”
非常适合查找这些类型的错误。它在所有替换之后但在执行之前输出每一行,这样您就可以准确地看到正在发生的事情。

实际上,该脚本存在一些问题。主要的一点是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”
非常适合查找这些类型的错误。它在所有替换之后但在执行之前输出每一行,这样您就可以确切地看到发生了什么。

我尝试了几种不同的组合。以下几点对我有用。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//\./}

我试过几种不同的组合。以下几点对我有用。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//\./}