这两项都有效。第一个更短,但我猜第二个更安全或更好 - 在$()中运行命令
如果是这样,有人可以解释为什么第二个更安全,更好等等。
if my_function "something" ; then ...
if $(my_function "something"); then ...
答案 0 :(得分:0)
第一个通常是你想要的。第一个执行函数,检查其退出状态,如果状态指示函数成功,则运行then
部分。
第二个(使用$( )
)运行该函数,捕获函数打印到stdout的任何内容,然后尝试将该输出作为另一个命令执行。如果它没有输出任何内容,则不会运行任何内容,因此如果您的函数成功,就会执行then
部分(就像第一个版本一样)。另一方面,如果它输出任何内容,那么它将作为另一个命令运行,如果 成功,then
部分将运行。如果它打印的内容不是有效命令,则算作失败。
所以,问题是,你的函数是否打印了你想要执行的命令?如果是这样,请使用第二种形式。不,使用第一个。