Bash에서 느낌표를 사용한 변수 대체

Bash에서 느낌표를 사용한 변수 대체

내 .cfg bash 스크립트 파일에 다음 줄이 있습니다.

DDF_SOURCE="siebel_DATA_DATE_FORMAT"
DATA_DATE_FORMAT=${!DDF_SOURCE}

}는 어떻게 ${!DDF_SOURCE계산되나요? 응 !siebel_DATA_DATE_FORMAT, 그건 이해가 안 돼.

답변1

그건간접 확장man bash, 섹션 에 기록됨확장,부분매개변수 확장:

매개변수의 첫 번째 문자가 느낌표(!)인 경우 1단계 변수 간접 지정이 도입됩니다. Bash는 나머지 인수로 구성된 변수 값을 변수 이름으로 사용합니다. 그런 다음 해당 변수를 확장하고 인수 자체의 값이 아닌 나머지 대체에 해당 값을 사용합니다. 이를 간접 확장이라고 합니다.

bash-4.2$ DDF_SOURCE="siebel_DATA_DATE_FORMAT"

bash-4.2$ siebel_DATA_DATE_FORMAT='Hello Indirect Redirection'

bash-4.2$ DATA_DATE_FORMAT=${!DDF_SOURCE} # siebel_DATA_DATE_FORMAT must get value before this line

bash-4.2$ echo $DATA_DATE_FORMAT
Hello Indirect Redirection

관련 정보