これらの両方が機能します。最初は短いですが、私は推測している第二は、より安全か優れている - などの第二は、より良い、より安全である理由を誰かが説明できる$内のコマンド()コマンドを実行した場合の2つの方法は、次のようになります。
もしそうなら、
if my_function "something" ; then ...
if $(my_function "something"); then ...
これらの両方が機能します。最初は短いですが、私は推測している第二は、より安全か優れている - などの第二は、より良い、より安全である理由を誰かが説明できる$内のコマンド()コマンドを実行した場合の2つの方法は、次のようになります。
もしそうなら、
if my_function "something" ; then ...
if $(my_function "something"); then ...
通常は最初のものが欲しいものです。最初の関数は関数を実行し、終了ステータスをチェックし、関数が成功したことを示すステータスの場合はthen
セクションを実行します。
2番目($()
)は、関数を実行し、関数がstdoutに出力した内容をキャプチャし、その出力を別のコマンドとして実行しようとします。何も出力しない場合、何も実行されないので、関数が成功すると(最初のバージョンと同様に)then
セクションが実行されます。一方、何かを出力すると、別のコマンドとして実行され、がであれば、then
セクションが実行されます。それが有効なコマンドでない場合、失敗とみなされます。
あなたの関数は実行したいコマンドを出力しますか?その場合は、2番目のフォームを使用します。そうではなく、最初のものを使ってください。
ありがとうございます。私はちょうど2番目が終了ステータスを返さないことを知ったので、最初のものと同様に動作しません –