首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无效的算术运算符

无效的算术运算符
EN

Stack Overflow用户
提问于 2009-04-16 01:58:35
回答 2查看 3.8K关注 0票数 0

使用cygwin并编写脚本以显示我的当前ip地址减去2。由于某种原因,它给出以下错误:“)语法错误:无效算术运算符(错误标记为”

这就是我正在使用的脚本。

代码语言:javascript
复制
$ 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//\./ }

任何帮助或建议都是明确的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-04-16 03:18:51

实际上,这个脚本有几个问题。主要的一点是,ipconfig将在行尾输出"\r“字符,这会阻塞计算。

另一个原因是您不允许使用多个NIC,因此我添加了"head -1"。您需要更智能地选择您想要的NIC。

最后,我从IP地址的前面去掉了前导空格(实际上是所有空格)。

下面的方法对我很有效:

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

输出:

代码语言:javascript
复制
192.168.91.7
192.168.91.5

实际上,我的版本输出如下:

代码语言:javascript
复制
192.168.91.1
192.168.91.-1

因此,您需要注意这一点。

我对简化输出以打动管理层并不陌生:-)。

有用的代码片段:

脚本顶部的"set -x" (未注释时)是查找此类错误的理想工具。它在所有替换之后但在执行之前输出每一行,这样您就可以确切地看到发生了什么。

票数 4
EN

Stack Overflow用户

发布于 2009-04-17 01:07:01

我尝试了几种不同的组合。下面的方法对我很有效。set -x真的很有帮助。再次感谢。

代码语言:javascript
复制
#!/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//\./}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/754488

复制
相关文章

相似问题

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