为了保持一致性,我尝试在所有的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`]]` 吗? - Ashish Gaur