-bashスクリプトの場合-追加された1つのコンピューター名を、ループなしでif [ $1 = ]内のコンピューター名のリストと比較できるかどうかを知りたいです。リストからコンピューターかどうかを確認するだけです-続行する場合ない - 停止します。あなたのアイデアをありがとう
3 に答える
3
ループを使用したくない理由がわからない:
COMPUTERS=( hosta hostb hostc )
for COMPUTER in ${COMPUTERS[@]}; do
if [ "${COMPUTER}" == "${1}" ];
then
echo "Yep. It's in the list."
fi
done
于 2013-01-23T04:31:37.613 に答える
1
いくつかの方法があります。本当に if を使用したい場合は、次のようにすることができます (変数の前後のスペースに注意してください)。
#!/bin/bash
COMPUTERS="hosta hostb hostc"
if [[ " $COMPUTERS " =~ " $1 " ]] ; then
echo "Yes, $1 is in the list"
else
echo "No, $1 is not in the list"
fi
私はケースが好きです:
case " $COMPUTERS " in
*" $1 "*) echo "Yes, $1 is in the list" ;;
*) echo "No, $1 is not in the list" ;;
esac
注: これらは絶対確実ではありません。たとえば、"hosta hostb" は一致しますが、これはおそらく意図したものではありませんが、データが整形式であることがわかっている場合、または追加のチェックを適用する場合は、単純で機能します。
于 2013-01-23T23:04:51.023 に答える
0
使用可能なホスト名をスペースで区切ったリストがある場合:
COMPUTERS="hosta hostb hostc"
echo ${COMPUTERS} | grep -qw "$1" && echo "$1 is in the list"
于 2013-01-23T09:32:35.430 に答える