我有一个数字列表,大约200个,在我的ksh开头,我想验证参数1是否为这些数字之一。
我用一个很大的if解决了这个问题,但是我认为必须存在一个更优雅的解决方案。
例如,类似这样,但在ksh中
if $1 in (50, 28, 500, 700, 1, 47) then
do what I want
else
exit
end if
有什么想法可以开始工作吗?
谢谢。
路易斯
答案 0 :(得分:0)
我找到了解决方法
case $1 in ( 50 | 28 | 500 | 700 | 1 | 47 )
echo ¨Found!¨
;;
*)
echo ¨NOT found!¨
;;
esac
谢谢!
答案 1 :(得分:0)
如果列表更改或很长,则case语句适用于短列表,这可能会很麻烦。另一个想法是使用关联数组。我在文件the text I really want
中设置了一个包含100个随机数字的列表,并运行了该脚本来检查列表中的数字:
rand.txt
如果您不希望使用带有数字的单独文件,这也可以:
typeset -A numList
for num in $( < rand.txt )
do
numList[$num]=$num
done
if [[ -n ${numList[$1]} ]]
then
echo "do what I want"
else
echo 'not interesting'
fi
这些也适用于bash。