![この単純なbashスクリプトがif/then/elseにエラーを引き起こすのはなぜですか? [閉鎖]](https://linux33.com/image/62286/%E3%81%93%E3%81%AE%E5%8D%98%E7%B4%94%E3%81%AAbash%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%8Cif%2Fthen%2Felse%E3%81%AB%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%92%E5%BC%95%E3%81%8D%E8%B5%B7%E3%81%93%E3%81%99%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
このスクリプトを実行しようとすると、次のようになります。
clear
echo -n "please enter a value"
read num
if [ "$num" -eq 8 ] then
echo "you entered 8"
else
echo "the number you entered was not 8"
次の出力/エラーが表示されます。
値5を入力してください
。 ./script.sh: 行 9: 'else' タグの近くに予期しない構文エラーがあります。
./script.sh: 行9: else'
このスクリプトが実行されないのはなぜですか?
答え1
句の後にセミコロンまたは改行文字が欠落しており、if
ブロックの末尾にはありません。fi
if
#!/bin/bash
clear
echo -n "please enter a value"
read num
if [ "$num" -eq 8 ]
then
echo "you entered 8"
else
echo "the number you entered was not 8"
fi
その他の提案:
#!
スクリプトは、常に使用するインタプリタをシステムに通知する行で始める必要があります。- あなたの比較
[ "$num" -eq 8 ]
は数値比較です。ユーザーが実際に数値を入力するかどうかわからない場合は、文字列比較を試してください。[ 8 = "$num" ]
read
ステートメントにプロンプトを含めることができます。read -p "Please enter a value: " num