KSH验证列表中是否存在数字

时间:2018-11-06 21:08:50

标签: arrays ksh

我有一个数字列表,大约200个,在我的ksh开头,我想验证参数1是否为这些数字之一。

我用一个很大的if解决了这个问题,但是我认为必须存在一个更优雅的解决方案。

例如,类似这样,但在ksh中

if $1 in (50, 28, 500, 700, 1, 47) then
   do what I want
else
   exit
end if

有什么想法可以开始工作吗?

谢谢。

路易斯

2 个答案:

答案 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。