[英]Mess with functions and associative arrays in ksh93
這是我的簡單數組:
typeset -A foo
foo["first"]="first Value"
foo["second"]="second Value"
我想做一個 function 來選擇這個數組,做一些事情並將它返回給腳本。 例如
function changeThat {
eval tmp=\$$1
tmp["$2"]=$3
return $tmp
}
我可以在腳本中使用 go 並執行以下操作:
foo=changeThat foo "first" "a new first value"
並得到一個漂亮的結果
echo ${foo["first"]}
a new first value
現在這不起作用......好吧,我知道語法可能不太正確。 但是我真的迷失了evals
和 scape echo
的細微差別(並不是說我從靈魂深處討厭它)。 此外,我的參考是bash並且不會是我第一次錯過 ksh 的一些技巧 - 例如,我到目前為止ksh88
,它甚至沒有關聯的 arrays,而大多數人說它應該。 原來我的 AIX 盒子不同意。 -_-
謝謝!
您可以像這樣定義您的 function:
function changeThat {
typeset -n ref="$1"
typeset key="$2"
typeset value="$3"
ref["$key"]="$value"
}
typeset -n ref
將 ref 變量定義為對其值指定的變量的引用。
當您調用 function 時:
changeThat foo this "mow the lawn"
function 中的變量 ref 更改引用了變量 foo。 現在使用 ref 就像使用 foo 一樣。 調用 changeThat 后
print ${foo["this"]}
現在將 output “修剪草坪”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.