※ ChatGPTを利用し、要約された質問です(原文:シェルスクリプトのYes、Noの入力ロジックに関する質問)
シェルスクリプトのYes、Noの入力ロジックに関する質問
このQ&Aのポイント
Linux(RHEL5)で作成したシェルスクリプトにおいて、ユーザにアンインストールの実行を問い合わせるロジックがありますが、何も入力せずにEnterを押すとエラーが出てしまいます。
yesかno以外の入力をした場合に再入力を促すようにしているが、正しく動作していないようです。
エラーメッセージから推測するに、ロジックのどこかに見落としがあるようですが、原因が見つかりません。
シェルスクリプトのYes、Noの入力ロジックに関する質問
こんにちは。
よろしくお願いします。
Linux(RHEL5)にて、以下のようなシェルスクリプトを作成しました。
ユーザにアンインストールを問い合わせるもので、
yesの時は処理が進み、noの時は処理が中断、
それ以外を入力した場合、再入力を促すようにしています。
echo \"\"
echo \"*** アンインストールを実行しますか? ***\"
read -p \" >>> 実行する場合「yes」、しない場合は「no」を入力してください <<< \" YESNO
while (test $YESNO != yes) && (test $YESNO != no)
do
echo \"\"
read -p \" >>> 「yes」もしくは「no」を入力してください <<< \" YESNO
done
if (test $YESNO == yes)
then continue
else
echo \"****** アンインストールをキャンセルしました ******\" &&
exit
fi
しかし、
何も入力せずに「Enter」を押した場合、
本来なら、再入力を促すように表示したいのですが、
以下のようにエラーが出て、終了してしまいます。
XXX.sh: line YYY: test; !=; unary operator expected
XXX.sh: line ZZZ: test; ==; unary operator expected
****** アンインストールをキャンセルしました ******
恐らくロジックのどこかに見落としがあると思うのですが、
原因がよく分かりません。
よろしくお願いします。
お礼
ありがとうございます! 一文字加えて比較したところ、enterを押しても、 再度、入力を促すようになりました! 左辺の空白がこんなに重要だったとは・・・。 勉強になりました。