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

在if语句中执行代码(Bash)

发布时间:2020-12-15 21:45:03 所属栏目:安全 来源:网络整理
导读:新问题: 我不能这样做(错误:第2行:[:==:一元运算符预期): if [ $(echo "") == "" ]then echo "Success!"fi 但这很好用: tmp=$(echo "")if [ "$tmp" == "" ]then echo "Success!"fi 为什么? 原始问题: 是否可以在if语句中获取命令的结果? 我想做这
新问题:

我不能这样做(错误:第2行:[:==:一元运算符预期):

if [ $(echo "") == "" ]
then
    echo "Success!"
fi

但这很好用:

tmp=$(echo "")
if [ "$tmp" == "" ]
then
    echo "Success!"
fi

为什么?

原始问题:

是否可以在if语句中获取命令的结果?

我想做这样的事情:

if [ $(echo "foo") == "foo" ]
then
    echo "Success!"
fi

我目前使用这种解决方法:

tmp=$(echo "foo")
if [ "$tmp" == "foo" ]
then
    echo "Success!"
fi

解决方法

简短的回答是肯定的 – 您可以评估if条件中的命令.我在你的第一个例子中唯一要改变的是引用:

if [ "$(echo foo)" == "foo" ]
then 
    echo "Success"'!'
fi

>注意’!’的有趣引用.这会禁用特殊行为!在交互式bash会话中,可能会为您带来意想不到的结果.

更新后,您的问题变得清晰,引用的更改实际上解决了它:

$(…)的评估发生在if […]的评估之前,因此如果$(…)计算为空字符串,则[…]变为if = ==“”,这是非法语法.

解决这个问题的方法是在$(…)表达式之外加上引号.这就是你可能会引用引用内引用的棘手问题,但我会将这个问题归结为另一个问题.

(编辑:李大同)

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

    推荐文章
      热点阅读