kshスクリプトの変数割り当て

kshスクリプトの変数割り当て

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エスケープを必要とせず、結果は間違いなく読みやすくなります。

関連情報