端末にコマンド出力を表示せずにbashスクリプトでコマンド出力に変数を設定するにはどうすればよいですか?

端末にコマンド出力を表示せずにbashスクリプトでコマンド出力に変数を設定するにはどうすればよいですか?

次のスクリプトを実行してみてください。

echo "Is autofs Enabled?"
cmd=`systemctl is-enabled autofs`
echo $cmd
if [[ $cmd = "enabled" ]]; then
echo "Yes autofs is enabled"
elif [[ $cmd = "disabled" ]]; then
echo "No autofs is disabled"
else echo "Autofs not found"
fi

autofsがインストールされていない場合、スクリプトの結果は次のようになります。

Failed to issue method call: No such file or directory
Autofs not found

autofsがインストールされていない場合、予想されるスクリプト出力は次のとおりです。

Autofs not found

「メソッド呼び出しを実行できませんでした:そのファイルまたはディレクトリがありません」を印刷しないようにスクリプトを変更するにはどうすればよいですか?

編集する: みんなありがとうございます。その答えはまさに私が探していたものでした。

ベストアンサー1

エラーストリームをリダイレクトするのはどうですか/dev/null

[ $(systemctl is-enabled autos 2>/dev/null) = "enabled" ] && echo true || echo false

注:出力を変数に割り当てるときにバックティックを使用することはシェル移植性の最も低い共通分母であり、最新のシェルではコマンドに変数を割り当てることに移行することをお勧めします。$()

おすすめ記事