我正在查看 ksh 脚本,并且看到一个函数,其中变量定义如下。谁能解释一下 ksh 脚本中下面的变量分配到底意味着什么?
temprule="\$${APPLC_NM}"
答案1
temprule
将被分配“$”,后跟变量的值APPLC_NM
。所以如果APPLC_NM
设置为“pizza”,temprule
就会变成“$pizza”。
请注意,这temprule="\$$APPLC_NM"
会做完全相同的事情。仅当变量名称后跟在变量名称中有效的字符时才需要括号。
答案2
正如 @ 所Julie Pelletier
指出的,这是创建间接变量或 nameref 的有趣语法。ksh
然而,有一些专门的语法来完成这项工作。这是 的一个功能ksh
,可能不适用于其他 shell。
更惯用的编写方式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 进行有趣的转义,并且结果可以说更具可读性。