변수 값이 목록의 일부인지 확인하세요.

변수 값이 목록의 일부인지 확인하세요.

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

관련 정보