是否有更好的方法从一行中获取命令的返回代码。例如:
$ test $(ls -l) ||echo 'ok'
-bash: test: too many arguments
ok
Run Code Online (Sandbox Code Playgroud)
上面的脚本在test命令中有错误,因为它似乎解析输出“ ls-l”而不返回代码。
我知道使用“如果”语法可以正常工作,但是需要多一行。
ls -l
if [ $? -eq 0 ];then
echo 'ok'
fi
Run Code Online (Sandbox Code Playgroud)
您可以使用&&和||使这些东西变得简单。例如,在以下内容中:
ls -l && echo ok
Run Code Online (Sandbox Code Playgroud)
echo ok&&仅当( ls -l)之前的命令返回时才会运行0。
另一方面,在以下方面:
ls -l || echo 'not ok'
Run Code Online (Sandbox Code Playgroud)
echo 'not ok'仅当之前的命令||返回非零时才会运行。
另外,您可以if..else使用以下命令使您的块成为单行;:
if ls -l;then echo ok;else echo 'not ok';fi
Run Code Online (Sandbox Code Playgroud)
但这可能会使您的代码难以阅读,因此不推荐。