Это мой простой массив:
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
и скейпа echo
(не сказать, что ненавижу его всей душой). Кроме того, я ссылаюсь на bash и не в первый раз пропускаю какой-то трюк, когда дело доходит до ksh. Например, я до сих пор был в ksh88
, в котором даже нет ассоциативных массивов, хотя большинство людей говорят, что должны. Оказывается, моя коробка AIX не согласуется. -_-
Спасибо!