AIX에서 배열 사용 중 오류: 81행의 구문 오류 오류: '(' 예상치 못한

AIX에서 배열 사용 중 오류: 81행의 구문 오류 오류: '(' 예상치 못한

AIX 환경에서 .sh 스크립트를 실행하려고 하는데 아래 줄에 오류가 발생합니다.

tableList = ( Value1 Value2 Value3 )

다음과 같은 스크립트를 실행하려고 합니다.

  1. sh file1.ksh
  2. 파일 이름을 바꾼 .ksh다음 파일을 실행했습니다.sh ./file1.sh

답변1

쉘은 sh일반적으로 POSIX 표준의 일부가 아니기 때문에 배열을 이해하지 못합니다. 스크립트의 파일 이름은 임의적이므로 a .sh또는 .ksh파일 이름 접미사는 의미가 없습니다.

또한 배열 할당 구문이 약간 잘못되었습니다(공백이 너무 많음). 수정 후 모습입니다

tableList=( Value1 Value2 Value3 )

및 로 끝나는 변수 이름을 참고하세요 (.

스크립트를 실행하려면 , 또는 같은 배열을 구현하는 셸을 사용하여 스크립트를 실행해야 합니다 ( ksh93사용 중인 다른 셸 구성에 따라 다름). AIX에서는 배열에 값을 할당하는 구문 이 약간 다릅니다( 를 사용함 ).bashzshyashkshksh88set -A tableList Value1 Value2 Value3

스크립트를 실행하는 가장 좋은 방법은 ksh93스크립트 상단에 인터프리터를 가리키는 행을 추가한 다음 를 사용하여 스크립트를 실행 가능하게 만드는 것입니다.#!ksh93chmod +x scriptname

AIX에서 쉘을 사용하려면 ksh93스크립트의 첫 번째 줄은 다음과 같아야 합니다.

#!/usr/bin/ksh93

그런 다음 명령줄에서 명시적인 해석기를 지정하지 않고 스크립트를 실행합니다.

./scriptname

답변2

AFAIR, AIX는 ksh88 기반 POSIX 쉘을 /bin/sh로 사용합니다.

ksh88은 지원하지 않습니다

tableList=( Value1 Value2 Value3 )

이는 POSIX에서는 필요하지 않습니다.

관련 정보