typeset -A가 스크립트에서 오류를 발생시킵니다.

typeset -A가 스크립트에서 오류를 발생시킵니다.

내 스크립트에서 연관 배열을 사용하고 있으므로

typeset -A <array_name>명령을 실행하면 bash 프롬프트에서 제대로 작동합니다.

하지만 스크립트에서 사용하면 다음과 같은 오류가 발생합니다. typeset: -A: invalid option typeset: usage: typeset [-afFirtx] [-p] name[=value] ...

나는 또한 대체 솔루션에 열려 있습니다.

참고 사항: typeset -a를 시도했지만 인덱스 배열을 선언했습니다. 하지만 저는 연관 배열을 원합니다.

답변1

이는 Bash 3에서 typeset -A.연관 배열Bash 4에 추가되었으며여기가 아니야배쉬 3.2 이하.

귀하의 스크립트는 셸로 사용 중인 것과 다른 버전의 Bash에서 실행되고 있는 것 같습니다. 두 경우 모두 동일한 시스템에 있는 경우 여러 버전이 설치되어 있으며 경로가 다른 버전을 선택할 수 있습니다. 다른 컴퓨터에서 스크립트를 실행하면 최신 버전을 설치할 수 있지만 그렇지 않으면 Bash가 직접 지원되지 않습니다.

zsh연관 배열은 이전 버전부터 지원되므로 사용 가능한 기능이 있으면 많은 작업 없이 스크립트를 이식할 수 있습니다. 그렇게 할 수 없다면 일반 배열 sum 을 사용하여 위조 grep하거나 다음을 사용할 수 있습니다.${!prefix@}이전 버전의 Bash에서 사용할 수 있는 일반 변수 세트도 있습니다. ${!prefix@}이름이 로 시작하는 모든 변수의 이름으로 확장됩니다 prefix. 이를 여러 변수와 함께 사용하여 연관 배열의 동작을 대부분 얻을 prefix_key1수 있습니다.prefix_another

관련 정보