0
以下は入力を読み取るmweで、文字 'a'と比較すると です。 そのまま呼び出してもうまく動作します。スクリプトがソースとなっているときに比較が失敗した場合
read -n 1 inp
if [ $inp = 'a' ]
then
echo "Hello"
fi
調達する場合しかし、それは エラーを与える:
parse error: condition expected: =
以下は入力を読み取るmweで、文字 'a'と比較すると です。 そのまま呼び出してもうまく動作します。スクリプトがソースとなっているときに比較が失敗した場合
read -n 1 inp
if [ $inp = 'a' ]
then
echo "Hello"
fi
調達する場合しかし、それは エラーを与える:
parse error: condition expected: =
スクリプトはzsh
、ないbash
で実行されますから、それを調達ので、これが起こります。
ソーススクリプトは、常にシバリングに関係なく、ソースを実行するシェルで実行されます。あなたのスクリプトはbash
のために書かれており、zsh
と互換性がないので失敗します。
同等zsh
コードは次のとおりです。
read -k 1 inp
if [ "$inp" = 'a' ]
then
echo "Hello"
fi
私はzshを使用していると述べたはずです:)。ありがとうございました。 – Sandeep
'内部の二重引用符であなたの変数を囲みます[...]'。 – codeforester