2017-04-22 15 views
1

私はいくつかの簡単なbashスクリプトを試していますが、プログラムが文字charを読み取る簡単な比較スクリプトに取り組んでいて、 "Y"か "y" YES "であり、" N "または" n "であれば" NO "である。文字Y、y、N、nは入力として使用される唯一の文字です。条件が問題の場合はBash

#!/bin/sh 

read char 
if (($char = "Y")) || (($char = "y")) 
then 
    echo "YES" 
else 
    echo "NO" 
fi 

上記のスクリプトは、Yまたはyで動作しますが、私は入れてNまたはNしようとすると、それはまだ「YES」印刷し、私は私が間違っているのかを把握しようとしています。

if [ "$char" == "Y" ] || [ "$char" == "y" ] 

のように、かっこで構文を使用すると、かっこで行うことがわかります。 私は

if (("$char" = "Y")) || (("$char" = "y")) 

または

if (($char == "Y")) || (($char == "y")) 

または

if (("$char" == "Y")) || (("$char" == "y")) 

または

if (("$char" == "Y" || "$char" == "y")) 

のように、括弧のためのすべての組み合わせを試してみましたが、それらのどれも動作しません。 私が作っている間違いは何ですか?

+3

を 'sh'は'あなたが正しい – Cyrus

+0

bash'されていません。私は元の投稿でそれを変更する必要がありますか? – Ioannis

答えて

5

((...))は算術用です;文字列比較を実行しています。代わりに[[を使用してください。パターンマッチングを使用して、大文字と小文字を同時に確認することができます。

if [[ $char = [Yy] ]]; then 

あなたが本当に移植性のため/bin/shを使用したい場合は、2つの[のコマンドを使用します。

if [ "$char" = Y ] || [ "$char" = y ]; then