変数の値がリストの一部であることを確認してください。

変数の値がリストの一部であることを確認してください。

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

関連情報