=
看板の周りにスペースを入れることはできません。
あなたが書くとき:
STR = "foo"
bashはSTR
、2つの引数(文字列=
とfoo
)で指定されたコマンドを実行しようとします
あなたが書くとき:
STR =foo
bashはSTR
、1つの引数(文字列=foo
)で指定されたコマンドを実行しようとします
あなたが書くとき:
STR= foo
bashはfoo
、STRを環境内の空の文字列に設定してコマンドを実行しようとします。
これが明確にするのに役立つのか、それとも単なる難読化であるのかはわかりませんが、次の点に注意してください。
STR "=" "foo"
最初のコマンドは、: 、とまったく同じです。
- 2番目はと同じです
STR "=foo"
、
- 最後は。と同等
STR="" foo
です。
sh言語仕様の関連セクション、セクション2.9.1には、次のように記載されています。
「単純なコマンド」とは、オプションの変数の割り当てとリダイレクトのシーケンスであり、任意のシーケンスで、オプションで単語とリダイレクトが続き、制御オペレーターによって終了されます。
そのコンテキストでは、aword
はbashが実行しようとしているコマンドです。リダイレクトではなく、前の文字列の部分が有効な変数名である=
(文字列の先頭以外の位置にある)文字列を含む文字列は変数の割り当てですが、リダイレクトまたは=
変数の割り当てはコマンドです。でSTR = "foo"
、STR
は変数の割り当てではありません。