加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash脚本 – 检查bash变量是否等于0

发布时间:2020-12-15 16:40:17 所属栏目:安全 来源:网络整理
导读:我有一个bash变量深度,我想测试它是否等于0.如果是,我想停止执行脚本。到目前为止我有: zero=0;if [ $depth -eq $zero ]; then echo "false"; exit;fi 不幸的是,这导致: [: -eq: unary operator expected (可能由于翻译有点不准确) 请,我如何修改我的
我有一个bash变量深度,我想测试它是否等于0.如果是,我想停止执行脚本。到目前为止我有:
zero=0;

if [ $depth -eq $zero ]; then
    echo "false";
    exit;
fi

不幸的是,这导致:

[: -eq: unary operator expected

(可能由于翻译有点不准确)

请,我如何修改我的脚本让它工作?

看起来你的深度变量未设置。这意味着在bash将变量的值替换为表达式后,表达式[$ depth -eq $ zero]变为[-eq 0]。这里的问题是-eq运算符不正确地用作只有一个参数(零)的运算符,但它需要两个参数。这就是为什么你得到一元操作错误消息。

编辑:正如Doktor J在他的评论中提到的,一个避免检查中未设置变量的问题的安全方法是将变量包含在“”中。看到他的解释的评论。

if [ "$depth" -eq "0" ]; then
   echo "false";
   exit;
fi

与命令一起使用的未设置变量对于bash显示为空。你可以使用下面的测试来验证这一点,所有测试都是false并且是等效的,因为xyz是未设置的:

> if [];然后echo“true”; else echo“false”; fi> xyz =; if [$ xyx];然后echo“true”; else echo“false”; fi

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读