このエラーは引き続き発生します。
./install.sh
./install.sh: line 28: syntax error near unexpected token `do'
./install.sh: line 28: ` do'
このコードを実行するとき(作業中):
# Set the prompt string:
PS3='Choose folder: ';
function choose() {
# This works:
#select folder;
#do test -n "$folder" && echo You chose: $REPLY\) $folder && break;
#echo 'Wrong entry, try again.';
#continue;
#done;
select folder;
do
case $folder in
'q')
echo 'Exiting …';
break;
;;
*)
do
test -n '$folder' && echo You chose: $REPLY\) $folder && break;
echo 'Wrong entry, try again.';
continue;
done;
;;
esac;
done;
}
# Switch to glob folder location:
cd ~/Desktop;
# Create menu:
choose foo*;
# Do stuff with result of choose() here ...
# Exit program:
exit 0;
do
上記のように、フォルダー全体のリストから選択できるメニューを作成しようとしています。残念ながら、入れ子になったときに上記のエラーが発生した理由を理解できません。
好ましくは、ユーザはディレクトリリストから選択することができる。と入力するとq
プログラムが終了します。間違った選択をした場合、プログラムは有効な選択を行うまで(またはEnterを押してq
終了するまで)再選択できるようにします。
まだ終了部分を特定していませんが、そうする前にこのdo
ステートメントエラーを克服する必要があります。
質問:原因は何syntax error near unexpected token `do'
ですか?解決策は何ですか?
ベストアンサー1
ループ条件がありません
構文が正しくありません。コードには他に問題がある可能性がありますが、このメッセージはブロックなどのキーワードを使用できないという事実から生じる可能性があります。do
ループ条件の1つも必要です。
あなたは現在以下を持っています:
*)
do
test -n '$folder' && echo You chose: $REPLY\) $folder && break;
echo 'Wrong entry, try again.';
continue;
done;
;;
ループを開始するために必要なfor
、while
またはキーワードがありません。until