yumまたはaptの状態を確認する場合

yumまたはaptの状態を確認する場合

Linuxシステムを自動的に設定するためにBashスクリプトを作成しようとしています。インストールされているOS、Ubuntu、またはCentOSに応じて他のタスクを実行したいと思います。しかし、どういうわけかif条件が機能しないようです(少なくともCentOSでは)。

if [[ -n "command -v apt-get" ]]; then
  echo "apt-get is used here"

elif [[ -n "command -v yum" ]]; then
  echo "yum is used here"

else
  echo "I have no Idea what im doing here"
fi

CentOSではcommand -v apt-get私のシェルには何も返されませんが、スクリプトはまだその部分を実行します。

私がここで何を見逃しているのかよくわかりません。

ベストアンサー1

commandあなたはまったく実行しません。使用する必要がありますコマンドの置き換え実行します(つまり$(...)、あまり人気のないバックティック)。あなたがすることは文字列をチェックするだけなので、最初のステートメントifは常に真です。

ただし、存在を確認するために出力を確認する必要はありませんcommand。戻りコードをテストするだけで十分です。

#!/bin/bash

if command -v apt-get >/dev/null; then
  echo "apt-get is used here"
elif command -v yum >/dev/null; then
  echo "yum is used here"
else
  echo "I have no Idea what im doing here"
fi

おすすめ記事