-对于 bash 脚本-我想知道是否可以将添加的计算机名称与 if[ $1 = ] 内的计算机名称列表进行比较,而无需循环,只是为了检查它是否是列表中的计算机-继续,如果不 - 停止。谢谢你的想法
问问题
174 次
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 回答