次のコードを実行すると、奇妙なエラーが発生しました。
#!/usr/bin/env bash
a="a"
b="a"
if [ "$a" == "$b" ]
then
echo "Eq"
fi
chmod u+x script.sh
その後、ファイルを実行すると以下が表示されますEq
。
$ ./script.sh
Eq
ただし、これをソーシングするとエラーが発生します。
$ source script.sh
script.sh:6: = not found
このエラーの原因は何ですか?
ベストアンサー1
スクリプトが実行されると、現在のシェルはコマンドを実行します。 zshでは、=
比較するには単一のコマンドを使用する必要があります。
$ echo '[ a == a ]' | zsh
zsh: = not found
exit code: 1
$ echo '[ a = a ]' | zsh
$