shellcheckは、変数が割り当てられた同じ行に変数をエクスポートしないように指示します。
理由を知りたいです。
alias
、、、、、にも同じアドバイスが適用されますdeclare
か?export
local
readonly
typeset
答え1
これ質問Bashでは、各コマンドに終了コードが1つしかありません。export foo="$(false)"
終了コードがfalse
単に削除された場合。そうすれば
foo="$(false)"
export foo
たとえば、settingsを使用して最初に失敗したコマンドに対してアクションを実行できますerrexit
。
たとえば、文字列リテラルを宣言して割り当てると、export foo='bar'
もちろんこの問題は発生しません。しかし、変化はソフトウェア開発において唯一変わらないものであり、これらの声明を別々に維持することで未来を確保できる良い管理に過ぎません。
foo="$(false)$(true)"
前述のタスク固有のコマンドに加えて、単一のタスク内に複数のコマンドがあります。pipefail
man bash
別の罠に陥る。
覚えておくべきもう一つのことは、宣言と割り当ての順序が時々関連していることです。たとえば、変数を宣言する必要があります。local
今後それらを割り当てなさい。 (残念ながら変数を宣言できません。readonly
初めて割り当てる前に。 )