

Bashのスクリプトで代入する時にうっかり

[code]

    foo = "bar"
    
[/code]

のように`=`の前後にスペースを入れて書いてしまったのですが、`foo`に何も代入されないだけでエラーが起きませんでした。

インタラクティブなbashシェル上で同じ記述をすると

[code]

    bash: foo: command not found
    
[/code]

のエラーになりますが、何が原因でスクリプト中ではエラーを吐かないんでしょうか？


CC BY-SA 4.0
2019-09-03T00:02:48.367
57781
2019-09-03T03:00:56.730
3271
question
bash
Bashスクリプト内で "=" の前後にスペースがある時にエラーが出ない理由


質問では`foo`という変数名を書いたのですが、

エラーが出なかった環境では変数名に`basename`というコマンドとして存在する名前を使っていたため  
`command not found`のエラーが出ずに代入行以降は空白の文字列の入った変数として扱われていたようでした。

質問文になかった情報を含んでしまっていますが質問を閉じるために回答を投稿いたしました。


CC BY-SA 4.0
2019-09-03T02:32:59.943
57784
2019-09-03T02:48:36.573
2019-09-03T02:48:36.573
3060
3271
57781
answer


bashにて代入する時にスペースがいらないです。一行一行実行しますので、foo =
"bar"と書くと、footコマンドを実行して、=と"bar"は引数となります。fooコマンドがないと、command not foundのエラーが出ます。  
ls -la ./ のような形です。もし、lsをsdfsdfsdfで変わると、sdfsdfsdf -la ./ 同じで、command not
foundのエラーが出るはずです。


CC BY-SA 4.0
2019-09-03T03:00:56.730
57785
2019-09-03T03:00:56.730
35698
57781
answer