运行 命令用 if 检查的两种方式
Two ways of running a command checked with if
这两个都有效。第一个更短,但我猜第二个更安全或更好 - 运行 $()
中的命令
如果是这样,谁能解释为什么第二种更安全、更好等等。
if my_function "something" ; then ...
if $(my_function "something"); then ...
第一个通常是您想要的。第一个执行函数,检查其退出状态,如果状态指示函数成功,则 运行 进入 then
部分。
第二个(与 $( )
)运行s 函数,捕获函数打印到标准输出的任何内容,然后尝试将该输出作为另一个命令执行。如果它不输出任何内容,则没有任何内容 运行,因此如果您的函数成功(就像第一个版本),则会执行 then
部分。另一方面,如果它确实输出了任何东西,那会得到 运行 作为另一个命令,如果 that 成功,then
部分得到 运行。如果它打印的不是有效命令,则视为失败。
所以,问题是,您的函数是否打印了您要执行的命令?如果是这样,请使用第二种形式。不行,用第一个。
这两个都有效。第一个更短,但我猜第二个更安全或更好 - 运行 $()
中的命令如果是这样,谁能解释为什么第二种更安全、更好等等。
if my_function "something" ; then ...
if $(my_function "something"); then ...
第一个通常是您想要的。第一个执行函数,检查其退出状态,如果状态指示函数成功,则 运行 进入 then
部分。
第二个(与 $( )
)运行s 函数,捕获函数打印到标准输出的任何内容,然后尝试将该输出作为另一个命令执行。如果它不输出任何内容,则没有任何内容 运行,因此如果您的函数成功(就像第一个版本),则会执行 then
部分。另一方面,如果它确实输出了任何东西,那会得到 运行 作为另一个命令,如果 that 成功,then
部分得到 运行。如果它打印的不是有效命令,则视为失败。
所以,问题是,您的函数是否打印了您要执行的命令?如果是这样,请使用第二种形式。不行,用第一个。