使用if检查运行命令的两种方法

时间:2017-04-16 16:49:46

标签: bash subshell

这两项都有效。第一个更短,但我猜第二个更安全或更好 - 在$()中运行命令

如果是这样,有人可以解释为什么第二个更安全,更好等等。

if my_function "something" ; then ...

if $(my_function "something"); then ...

1 个答案:

答案 0 :(得分:0)

第一个通常是你想要的。第一个执行函数,检查其退出状态,如果状态指示函数成功,则运行then部分。

第二个(使用$( ))运行该函数,捕获函数打印到stdout的任何内容,然后尝试将该输出作为另一个命令执行。如果它没有输出任何内容,则不会运行任何内容,因此如果您的函数成功,就会执行then部分(就像第一个版本一样)。另一方面,如果它输出任何内容,那么它将作为另一个命令运行,如果 成功,then部分将运行。如果它打印的内容不是有效命令,则算作失败。

所以,问题是,你的函数是否打印了你想要执行的命令?如果是这样,请使用第二种形式。不,使用第一个。