ksh 스크립트를 보고 있는데 다음과 같이 정의된 변수가 있는 함수가 보입니다. ksh 스크립트에서 다음 변수 할당이 실제로 무엇을 의미하는지 설명할 수 있는 사람이 있습니까?
temprule="\$${APPLC_NM}"
답변1
temprule
"$" 뒤에 변수 값이 할당됩니다 APPLC_NM
. 따라서 APPLC_NM
"pizza"로 설정하면 temprule
"$pizza"가 됩니다.
이것은 temprule="\$$APPLC_NM"
똑같은 일을 한다는 점에 유의하십시오. 괄호는 변수 이름 뒤에 변수 이름에 유효한 문자가 오는 경우에만 필요합니다.
답변2
@가 Julie Pelletier
지적했듯이 이는 간접 변수나 이름 참조를 생성하는 데 흥미로운 구문입니다. ksh
그러나 작업을 수행하는 데 특화된 구문이 있습니다. 이것은 기능 ksh
이며 다른 쉘에서는 작동하지 않을 수 있습니다.
좀 더 관용적으로 작성하는 방법 ksh
은 다음과 같습니다.
# Set up the nameref:
nameref temprule=APPLC_NM
# Assign value to AAPLC_NM
APPLC_NM=abc
# The above two statements may be executed in any order.
# Now, temprule will contain the value of APPLC_NM:
echo $temprule
abc
이제 $
흥미로운 double 이스케이프가 필요하지 않으며 결과는 틀림없이 더 읽기 쉽습니다.