gpt4 book ai didi

linux - 在 bash 中执行双括号中的命令不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:05 31 4
gpt4 key购买 nike

为了保持一致,我尝试在所有 if 语句中使用双括号 [[ ]]。然而,当我要检查我想运行的命令的返回值时,我确实遇到了问题。在测试了几种创建 if 语句的方法后,我发现只有没有括号才能执行命令。

以下不起作用:

if [[ $command ]] ; then
echo "something"
fi

if [[ $(command) ]] ; then
echo "something"
fi

if [[ ${command} ]] ; then
echo "something"
fi

即使命令未运行,上面的代码也会使 if 循环为真。由于上面的代码不适用于大括号,因此使用它也不起作用:

[[ $command ]] || echo "failed"

而且它在子 shell 中也不起作用。

以下作品:

if $command ; then
echo "something"
fi

if $(command) ; then
echo "something"
fi

为什么将命令放在带括号的 if 循环中不起作用,为什么上面的 if 循环甚至没有运行命令时报告 true?我正在使用 bash 版本 4.1.9。我试了很多次,if 循环和我上面输入的一样简单,它只是检查命令是否成功运行,如果没有成功则退出。

最佳答案

简短的回答是:

  • [[[ 需要一个表达式

  • if 需要一个命令

说:

[[ $(command) ]]

基本上会执行:

[[ -n <command_output> ]]

这可能是也可能不是您想要的。另一方面,说:

$command && echo something || echo other

将根据命令的返回代码(分别为0 和非零)回显somethingother

关于linux - 在 bash 中执行双括号中的命令不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21681756/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com