我试图在bash中编写一个脚本,检查用户输入的有效性。
我想将输入(变量x)匹配到一个有效值列表。
我现在想到的是:
for item in $list
do
if [ "$x" == "$item" ]; then
echo "In the list"
exit
fi
done
我的问题是,如果有更简单的方法,
对于大多数编程语言,类似list.contains(x)。
列表是:
list="11 22 33"
我的代码将只对这些值回显消息,因为list被视为数组而不是字符串,
所有的字符串操作都将验证1,而我希望它失败。
我发现使用echo $LIST | xargs -n1 echo | grep $VALUE更容易,如下图所示:
LIST="ITEM1 ITEM2"
VALUE="ITEM1"
if [ -n "`echo $LIST | xargs -n1 echo | grep -e \"^$VALUE`$\" ]; then
...
fi
这适用于空格分隔的列表,但你可以通过执行以下操作将其调整为任何其他分隔符(如:):
LIST="ITEM1:ITEM2"
VALUE="ITEM1"
if [ -n "`echo $LIST | sed 's|:|\\n|g' | grep -e \"^$VALUE`$\"`" ]; then
...
fi
注意,“是测试工作所必需的。