失敗時にエラーが発生している間にコマンド出力を変数として保存する方法は?

失敗時にエラーが発生している間にコマンド出力を変数として保存する方法は?

コマンド変数に基づいてifステートメントを実行しようとしています。たとえば、次のようになります。

ssh_location=$(which ssh)

私の問題は、これを保存したいということですただシステムに存在する場合は、さらに処理するためにバイナリを使用できます。それ以外の場合は、エラー文字列をエコーし​​たいと思います。これは私が運なく試みることです。

if ["$ssh_location"] ; then
    echo "it exists"
else 
    echo "does not exist"
fi

次のエラーメッセージが表示され続けます。

./test.sh: line 6: [/usr/local/bin/ssh]: No such file or directory
does not exist

(確かに存在します)。

ベストアンサー1

["$ssh_location"]ファイルが存在することを確認する代わりに、存在しないパスを使用してコマンドを実行しようとします。

ファイルが存在することを確認する構文は次のとおりです。

if [ -f "$ssh_location" ]

括弧内にスペースはありません(はい、必須です)-f。それ以外の場合は、-fコマンドの戻りコードを評価しますssh

おすすめ記事