Bashロジックはあるシステムでは逆に動作しますが、他のシステムでは動作しません。

Bashロジックはあるシステムでは逆に動作しますが、他のシステムでは動作しません。

2つのLinuxシステムがあります。各システムでプログラムの存在をテストしています。あるシステムにはプログラムがインストールされ、別のシステムにはインストールされていません。コマンドが$()各システムで異なる値を返しても、すべてのシステムは次の例を同じ方法で評価します(予想どおり、nvimがインストールされているシステムでは0が返され、nvimがないシステムでは1が返されます)。例:

if [[ $(type nvim &>/dev/null) ]]; then
    echo true;
else
    echo false;
fi

false両方のシステムにエコーがあります。
なぜこれが起こり、どのように解決できますか?

ベストアンサー1

努力する:

if type nvim &>/dev/null
then
     echo true
else
     echo false
fi

ステートメントは返される終了コードif command; then...によって異なります。commandこの[[...]]コマンドは、文字列の同一性、ファイルの存在など、さまざまな条件に基づいて終了コードを設定できます。man bash詳細より。ここでは、これらの条件は必要なく、type便利な終了コードはそれ自体が返されます。

おすすめ記事