dポイントプレゼントキャンペーン実施中!

こんにちは。
よろしくお願いします。

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)
thencontinue
else
echo \"****** アンインストールをキャンセルしました ******\" &&
exit
fi


しかし、
何も入力せずに「Enter」を押した場合、
本来なら、再入力を促すように表示したいのですが、
以下のようにエラーが出て、終了してしまいます。

XXX.sh: line YYY: test; !=; unary operator expected
XXX.sh: line ZZZ: test; ==; unary operator expected
****** アンインストールをキャンセルしました ******

恐らくロジックのどこかに見落としがあると思うのですが、
原因がよく分かりません。

よろしくお願いします。

A 回答 (1件)

test の左辺が空白になるからですね。


こういう場合は,
 test x"$YESNO" != x"yes"
のように一文字付けて比較します。
    • good
    • 0
この回答へのお礼

ありがとうございます!
一文字加えて比較したところ、enterを押しても、
再度、入力を促すようになりました!

左辺の空白がこんなに重要だったとは・・・。
勉強になりました。

お礼日時:2007/08/28 19:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!