我试图检查PHONE_TYPE变量是否包含三个有效值之一。
if [ "$PHONE_TYPE" != "NORTEL" ] || [ "$PHONE_TYPE" != "NEC" ] ||
[ "$PHONE_TYPE" != "CISCO" ]
then
echo "Phone type must be nortel,cisco or nec"
exit
fi
Run Code Online (Sandbox Code Playgroud)
上面的代码对我不起作用,所以我尝试了这个:
if [ "$PHONE_TYPE" == "NORTEL" ] || [ "$PHONE_TYPE" == "NEC" ] ||
[ "$PHONE_TYPE" == "CISCO" ]
then
: # do nothing
else
echo "Phone type must be nortel,cisco or nec"
exit
fi
Run Code Online (Sandbox Code Playgroud)
这种类型的任务有更干净的方法吗?
一些类似 Bourne 的 shell 支持关联数组:(ksh93自 1993 年以来)、zsh(自 1998 年以来)、bash(自 2009 年以来),尽管 3 之间的行为存在一些差异。
一个常见的用途是计算某些字符串的出现次数。
但是,我发现以下内容:
typeset -A count(( count[$var]++ ))
对某些值不起作用$var,我听说如果 的内容处于或可能处于攻击者的控制之下,它甚至会构成任意命令执行漏洞$var。
这是为什么?有问题的价值观是什么?我该如何解决它?