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