私は初めてbashスクリプトと「if then」ステートメントに触れました。以下の簡単なスクリプトを実行すると、正しい結果が得られますが、それでもエラーが発生します。スクリプト名はtestscript.shです。エラーは次のとおりです。 "./testscript: line 5: [csh: コマンドが見つかりません]"
これが何を意味するのかを知っている人はいますか?
#! /bin/bash
MY_SHELL="csh"
If ["$MY_SHELL" = "bash"
then
echo "You seem to like the bash shell."
else
Then "You don't seem to like the bash shell."
fi
答え1
一行ずつ見てみましょう。
#! /bin/bash
MY_SHELL="csh"
今まではそんなに良くなった。
If ["$MY_SHELL" = "bash"
今、この行にはエラーがたくさんあります。
if
代わりにIf
- シェルは大文字と小文字を区別するので、foo
とFOO
は異なります。[
文字の後にスペースが必要です。]
テストが終わったら、スペースを追加する必要があります。
これは、行がより似ている必要があることを意味します。if [ "$MY_SHELL" = "bash" ]
then
echo "You seem to like the bash shell."
else
これらは良いです
Then "You don't seem to like the bash shell."
ここに一つ欲しいですecho
。大文字と小文字を区別する必要があることを覚えておいてください。
fi
結果:
#! /bin/bash
MY_SHELL="csh"
if [ "$MY_SHELL" = "bash" ]
then
echo "You seem to like the bash shell."
else
echo "You don't seem to like the bash shell."
fi
編集:シェルスクリプトに慣れたらhttps://www.shellcheck.net/コンテンツの検証に役立つウェブサイトです。エラー出力は必ずしも明確ではありませんが、一般的にエラーを指摘するのに役立ちます。
答え2
角かっこは実際にコマンドなので、[
前後にスペースが必要です!]
だから:
if [ "$shell" = "bash" ];
リクエストされたエラーなので、私が指摘していない他のエラーもあります。