"=="論理演算子とzshバージョン5.7.x(Homebrewを使用してインストール)

この演算子を使用すると、スクリプトにエラーが発生します。オンラインにはいくつかの文書があり、二重等号が機能するはずです。どんなアイデアがありますか?

Zshリファレンスガイド:http://zsh.sourceforge.net/Doc/Release/Conditional-Expressions.html

スクリプト:

#!/bin/zsh

if [ $_user == "root" ]; then
    echo "root"
else
    echo "not root"
fi

実行してください:

$ ./script.sh
./script.sh:3: = not found

ベストアンサー1

簡単な答え:aは==aです論理演算子[[ … ]]構造物内部でのみ可能です。

$ [[ one == one ]] && echo "yes"
yes

kshとbashでも動作します。

[[ … ]]構造物外で使用される場合=cmdは次のようになります。ファイル名拡張演算子しかしzshでのみ

$ echo ==
zsh: = not found

[ … ]これはあなたが使用するより簡単な構成で起こるものです。

ただし、シェルスクリプトを実行しているユーザーがrootであるかどうかをテストする正しい方法は次のとおりです。

if (( EUID == 0 )); then
    echo "root"
else
    echo "not root"
fi

おすすめ記事