Это мой простой массив:
typeset -A foo
foo["first"]="first Value"
foo["second"]="second Value"
И я хочу создать функцию, которая выберет этот массив, что-то сделает и вернет его обратно в скрипт.например,
function changeThat {
eval tmp=\$$1
tmp["$2"]=$3
return $tmp
}
Я мог бы пойти по сценарию и сделать что-то вроде:
foo=changeThat foo "first" "a new first value"
И получить красивый результат, такой как
echo ${foo["first"]}
a new first value
Теперь этоне работает ... Ну, я знаю, что синтаксис, вероятно, не совсем правильный.Но я действительно заблудился, пройдя через нюансы evals
и scape echo
(не говоря уже о том, что я ненавижу это от всей души).Кроме того, я имею в виду bash , и я бы не впервые пропустил какой-то трюк, когда дело доходит до ksh - например, я был так далеко в ksh88
, который даже неесть ассоциативные массивы, в то время как большинство людей говорят, что должно.Оказывается, мой AIX box не согласен.-_-
спасибо!