AIX 환경에서 .sh 스크립트를 실행하려고 하는데 아래 줄에 오류가 발생합니다.
tableList = ( Value1 Value2 Value3 )
다음과 같은 스크립트를 실행하려고 합니다.
sh file1.ksh
- 파일 이름을 바꾼
.ksh
다음 파일을 실행했습니다.sh ./file1.sh
답변1
쉘은 sh
일반적으로 POSIX 표준의 일부가 아니기 때문에 배열을 이해하지 못합니다. 스크립트의 파일 이름은 임의적이므로 a .sh
또는 .ksh
파일 이름 접미사는 의미가 없습니다.
또한 배열 할당 구문이 약간 잘못되었습니다(공백이 너무 많음). 수정 후 모습입니다
tableList=( Value1 Value2 Value3 )
및 로 끝나는 변수 이름을 참고하세요 (
.
스크립트를 실행하려면 , 또는 같은 배열을 구현하는 셸을 사용하여 스크립트를 실행해야 합니다 ( ksh93
사용 중인 다른 셸 구성에 따라 다름). AIX에서는 배열에 값을 할당하는 구문 이 약간 다릅니다( 를 사용함 ).bash
zsh
yash
ksh
ksh88
set -A tableList Value1 Value2 Value3
스크립트를 실행하는 가장 좋은 방법은 ksh93
스크립트 상단에 인터프리터를 가리키는 행을 추가한 다음 를 사용하여 스크립트를 실행 가능하게 만드는 것입니다.#!
ksh93
chmod +x scriptname
AIX에서 쉘을 사용하려면 ksh93
스크립트의 첫 번째 줄은 다음과 같아야 합니다.
#!/usr/bin/ksh93
그런 다음 명령줄에서 명시적인 해석기를 지정하지 않고 스크립트를 실행합니다.
./scriptname
답변2
AFAIR, AIX는 ksh88 기반 POSIX 쉘을 /bin/sh로 사용합니다.
ksh88은 지원하지 않습니다
tableList=( Value1 Value2 Value3 )
이는 POSIX에서는 필요하지 않습니다.