내가에 와서 가장 가까운 솔루션입니다 :배열 키가 있는지 테스트하는 방법은 무엇입니까?
declare -A foobar=([foo]=bar [bar]=foo)
(set -u; true ${foobar[foo]}) 2>/dev/null
가 이상적으로 배열 키가 정의되어있는 경우 테스트 test -v
를 사용하고 싶습니다. 그러나 test -v foobar[bar]
은 항상 1
을 반환합니다. 또한 글로벌 set +u
을 원하지 않고 정의되지 않은 변수에 액세스 할 위험이 있습니다.
첫째 : shopt 내부의
nounset
쉘 옵션을 선택하고 새로운 버전이 출시 될 때마다 강타의 행동 테스트를 다시하기 위해 나는 다음 배쉬 쉘 스크립트를 썼다. 그러나 당신의 접근 방법은 표현력이 부족할뿐만 아니라 두 개의 부비 트랩을 암시하는 것처럼 더 부서지기 쉬운 것입니다. –