작업을 쉽게 실행하기 위해 일부 Unix 명령 스크립트와 명령을 실행하는, 내가 관리하지 않는 시스템과 상호 작용하려고 합니다.
작동하지 않는 변수 대체가 있는데 이를 방지하기 위한 명령을 작성할 수 있는지 궁금합니다. 설정해야 할 변수가 너무 많아서 빈 변수를 입력할 기회가 있었으면 좋겠습니다. 문제는 시스템이 빈 변수를 전달하지 않고 변수가 전혀 설정되지 않는다는 것입니다. 알겠어요
${option.VARIABLE}: 오류 대체
비슷한 것을 설정하려고 시도했지만 작동하지 않았습니다.
if [ -z ${option.VARIABLE} ]; then option.VARIABLE="";
어떤 아이디어가 있나요?
답변1
점은 변수 이름에 유효한 문자가 아닙니다. bash 매뉴얼은 다음과 같이 말합니다(여기)
이름
문자, 숫자, 밑줄로만 구성되고 문자나 밑줄로 시작하는 단어입니다. 이름은 쉘 변수 및 함수 이름으로 사용됩니다. 식별자라고도 합니다.
그러나 내 ksh93 매뉴얼 페이지에는 다음과 같이 나와 있습니다.
정의.
[...] 식별자는 문자나 밑줄로 시작하는 일련의 문자, 숫자 또는 밑줄입니다. 식별자는 변수 이름의 일부로 사용됩니다. vname은 로 구분된 하나 이상의 식별자 시퀀스입니다. 선택적으로 .가 앞에 붙습니다. Vname은 함수 및 변수 이름으로 사용됩니다.
이 부분은 귀하의 질문과 가장 관련이 있는 것 같습니다(강조).
매개변수 확장.
[...] 변수는 vname으로 표시됩니다. vname이 마지막 . 이미 존재해야 합니다.
이 기능은 bash가 아닌 ksh93에만 존재합니다. 스크립트에서 이를 사용하는 경우 ksh93에서 실행해야 합니다.
답변2
내 생각에 "." 변수 이름이 코드를 망칠 것입니다.
option.VARIABLE
변수 이름을 에서 로 변경하여 변수에서 점을 제거해 보세요 optionVARIABLE
.