だから私はスクリプトを作成し、最後に飲み物を入力したときに実行しない行が実行されることを除いてうまくいきました。最後の行は、「いいえ」または「いいえ」を入力した場合にのみ表示されます。私が何を間違っているのでしょうか?
echo -n "Are you thirsty?"
read th
if [ "$th" = "yes" ] || [ "Yes" ]; then
echo "What would you like to drink?"
read th
fi
if [ "$th" = "water" ]; then
echo "Clear crisp and refreshing."
elif [ "$th" = "beer" ]; then
echo "Let me see some ID."
elif [ "$th" = "wine" ]; then
echo "One box or Two?"
else
echo "Coming right up."
fi
if [ "$th" = "no" ] || [ "No" ]; then
echo "Come back when you are thirsty."
fi
ベストアンサー1
あなたの質問は[ "Yes" ]
それ[ "No" ]
と同じであり、[ -n "Yes" ]
したがって[ -n "No" ]
常にtrueと評価されます。
正しい構文は次のとおりです。
if [ "$th" = "yes" ] || [ "$th" = "Yes" ]; then
...
if [ "$th" = "no" ] || [ "$th" = "No" ]; then
または:
if [ "$th" = "yes" -o "$th" = "Yes" ]; then
...
if [ "$th" = "no" -o "$th" = "No" ]; then
またはbash
Bourne シェルインタプリタを使用する場合:
if [ "${th,,}" = "yes" ]; then
...
if [ "${th,,}" = "no" ]; then
(${th,,}
変数の小文字の値に置き換えますth
)