점으로 변수 옵션 설정

점으로 변수 옵션 설정

작업을 쉽게 실행하기 위해 Unix 명령 스크립트와 명령을 수행하는 내가 관리하지 않는 시스템과 인터페이스하려고 합니다.

작동하지 않는 변수 대체가 있는데 이러한 상황을 피하기 위한 명령을 작성할 수 있는지 궁금합니다. 설정할 변수가 많으므로 빈 변수를 입력하고 싶습니다. 문제는 시스템이 빈 변수를 전달하지 않고 단순히 변수를 설정하지 않는다는 것입니다. 나는 얻다

${option.VARIABLE}: 잘못된 대체

그런 것을 설정하려고 시도했지만 작동하지 않습니다.

if [ -z ${option.VARIABLE} ]; 그런 다음 option.VARIABLE=""; fi;

어떤 아이디어?

답변1

점은 변수 이름에 유효한 문자가 아닙니다. bash 매뉴얼은 다음과 같이 말합니다(여기)

이름

문자, 숫자, 밑줄로만 구성되고 문자나 밑줄로 시작하는 단어입니다. 이름은 쉘 변수 및 함수 이름으로 사용됩니다. 식별자라고도 합니다.


그러나 내 ksh93 매뉴얼 페이지에는 다음과 같이 나와 있습니다.

정의.

[...] 식별자는 문자나 밑줄로 시작하는 일련의 문자, 숫자 또는 밑줄입니다. 식별자는 변수 이름의 구성 요소로 사용됩니다. vname은 로 구분된 하나 이상의 식별자 시퀀스입니다. 선택적으로 .가 앞에 붙습니다. Vname은 함수 및 변수 이름으로 사용됩니다.

이 부분이 귀하의 문제와 가장 관련이 있는 것 같습니다(강조).

매개변수 확장.

[...] 변수는 vname으로 표시됩니다. vname에 .가 포함된 변수를 만들려면 vname이 마지막 . 이전의 모든 항목으로 구성된 변수를 만듭니다. 이미 존재해야 합니다.

이 기능은 bash가 아닌 ksh93에만 존재합니다. 스크립트에서 이를 사용하는 경우 ksh93에서 실행해야 합니다.

답변2

내 생각 엔 "." 변수 이름으로 인해 코드가 엉망이 됩니다.

option.VARIABLE예를 들어 변수 이름 을 에서 로 변경하여 변수에서 해당 점을 제거해 보세요 optionVARIABLE.

관련 정보