验证变量的值是列表的一部分

验证变量的值是列表的一部分

我想确保变量 ( 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>也不是有效的表达式。

相反,您可以将列表转换为关联数组。考虑遵循此答案中给出的示例:

https://unix.stackexchange.com/a/177589/573867

相关内容