変数を割り当てた同じ行に変数をエクスポートするのはどうですか?

変数を割り当てた同じ行に変数をエクスポートするのはどうですか?

~から前のコマンドの最後のパラメータは何でしたか?

shellcheckは、変数が割り当てられた同じ行に変数をエクスポートしないように指示します。

理由を知りたいです。

alias、、、、、にも同じアドバイスが適用されますdeclareか?exportlocalreadonlytypeset

答え1

これ質問Bashでは、各コマンドに終了コードが1つしかありません。export foo="$(false)"終了コードがfalse単に削除された場合。そうすれば

foo="$(false)"
export foo

たとえば、settingsを使用して最初に失敗したコマンドに対してアクションを実行できますerrexit

たとえば、文字列リテラルを宣言して割り当てると、export foo='bar'もちろんこの問題は発生しません。しかし、変化はソフトウェア開発において唯一変わらないものであり、これらの声明を別々に維持することで未来を確保できる良い管理に過ぎません。

foo="$(false)$(true)"前述のタスク固有のコマンドに加えて、単一のタスク内に複数のコマンドがあります。pipefailman bash別の罠に陥る。

覚えておくべきもう一つのことは、宣言と割り当ての順序が時々関連していることです。たとえば、変数を宣言する必要があります。local 今後それらを割り当てなさい。 (残念ながら変数を宣言できません。readonly初めて割り当てる前に。 )

関連情報