我想确保变量 ( STATE
) 的值是列表 ( ALL_STATES
) 的一部分。
#!/usr/bin/bash
STATE='somevalue'
ALL_STATES=( lirum larum loeffelstiel )
echo state id is: "${STATE}"
echo all states are: "${ALL_STATES[@]}"
while ${STATE} not in ${ALL_STATES} ; do
echo ${STATE} needs a valid value
read -p "please provide the state ID: " STATE
done
echo state id is: "${STATE}"
我正在接受./test_while_loop.sh: line 8: somevalue: command not found
。那么我的病情似乎有问题,到底是什么呢?
答案1
您的脚本中的错误是,在 bash 中,while
关键字必须后跟命令,它不解释表达式。此外,<value> in <array>
也不是有效的表达式。
相反,您可以将列表转换为关联数组。考虑遵循此答案中给出的示例: