점으로 변수 옵션 설정

점으로 변수 옵션 설정

작업을 쉽게 실행하기 위해 일부 Unix 명령 스크립트와 명령을 실행하는, 내가 관리하지 않는 시스템과 상호 작용하려고 합니다.

작동하지 않는 변수 대체가 있는데 이를 방지하기 위한 명령을 작성할 수 있는지 궁금합니다. 설정해야 할 변수가 너무 많아서 빈 변수를 입력할 기회가 있었으면 좋겠습니다. 문제는 시스템이 빈 변수를 전달하지 않고 변수가 전혀 설정되지 않는다는 것입니다. 알겠어요

${option.VARIABLE}: 오류 대체

비슷한 것을 설정하려고 시도했지만 작동하지 않았습니다.

if [ -z ${option.VARIABLE} ]; then option.VARIABLE="";

어떤 아이디어가 있나요?

답변1

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

이름

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


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

정의.

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

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

매개변수 확장.

[...] 변수는 vname으로 표시됩니다. vname이 마지막 . 이미 존재해야 합니다.

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

답변2

내 생각에 "." 변수 이름이 코드를 망칠 것입니다.

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

관련 정보