내 .cfg bash 스크립트 파일에 다음 줄이 있습니다.
DDF_SOURCE="siebel_DATA_DATE_FORMAT"
DATA_DATE_FORMAT=${!DDF_SOURCE}
방법이다 ${!DDF_SOURCE
} 평가? 그것은 것 !siebel_DATA_DATE_FORMAT
나에게 이해가되지 않는다.
답변
이는 EXPANSION 섹션의 Parameter Expansion 섹션에 설명 된 간접 확장입니다 .man bash
매개 변수의 첫 문자가 느낌표 (!) 인 경우 가변 간접 레벨이 도입됩니다. 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