シェルスクリプト内での command not found

シェルスクリプトでcommand not foundが出たときの対処法を紹介します。bashです。

ターミナルでcommand not found の場合、PATHの設定が間違っていると考えられます。

注意
本記事では、PATHの問題(ターミナル上)ではなく、シェルスクリプトで実行するとcommand not foundとなるときの対処法を紹介します。

#!/bin/bash

str = "Hello,Shell!"

実行すると

sample.sh: line 3: str: command not found

一見、間違っていなそうですが、何が問題なのでしょうか。

解決方法

シェルは、変数=値の=の前後にスペースがあるとcommand not foundと言われます。

ですので、エラーが言われている箇所の=の前後にスペースがないか確認をしましょう。

上記の例では、str = “Hello,Shell!”と変数と=と値にスペースがあります。

したがって、以下のようにすることで、解決します。

#!/bin/bash

str="Hello,Shell!"

まとめ

普段、Pythonを使っていて、変数=値でスペースを入れてしまっていたのが、出てしまいました。

なぜ、ダメなのかというと変数代入とコマンド呼び出しと区別がつかないからだそうです。

cshでは、できるようです。スペースを入れても問題ないようです。

このことについて、めちゃくちゃ詳しく書いてある記事はこちらです。