Minap ebbe futottam a stackoverflow-n
https://stackoverflow.com/questions/3112687/how-to-iterate-over-associa…
foreach(){
arr="$(declare -p $1)" ; eval "declare -A f="${arr#*=};
for i in ${!f[@]}; do $2 "$i" "${f[$i]}"; done
}
$ bar(){ echo "$1 -> $2"; }
$ declare -A foo["flap"]="three four" foo["flop"]="one two"
$ foreach foo bar
flap -> three four
flop -> one two
valaki eltudja magyarázni az f="${arr#*=} változót?
- 1024 megtekintés
Hozzászólások
Rosszul mondatelemzel:
eval "declare -A f="$blablahblah - azaz hozz letre egy "f" nevezetu asszociativ tombot a blablablah osszes elemevel. Hogy mondjuk minek ide az az eval meg a tobbi nonyolult korites az eleg erdekes, mivel sokkal egyszerubb amit felette irtak.
Mondjuk a zsh-m meg se eszi :D
Nezz utana az eval-nak.
- A hozzászóláshoz be kell jelentkezni
az eval cuccot ertem. amit nem ertek az f= utani resz :)
--
A legértékesebb idő a pillanat amelyben élsz.
https://sites.google.com/site/jupiter2005ster/
- A hozzászóláshoz be kell jelentkezni
Nézz bele a man bash azon szakaszába, ahol ez van: ${parameter#word}
Hátha úgy érthetőbbé válik.
Létrehoz egy f nevű asszociatív tömböt úgy, hogy az $arr változó tartalmát hajtja végre, de előtte a string elejétől az "="-ig töröl mindent.
$arr tartalma eredetileg:
declare -A foo='([flap]="three four" [flop]="one two" )'
${arr#*=}
'([flap]="three four" [flop]="one two" )'
Így érthetőbb?
- A hozzászóláshoz be kell jelentkezni
facepalm. pedig a 'Parameter Expansion' már többször is használtam. thx.
--
A legértékesebb idő a pillanat amelyben élsz.
https://sites.google.com/site/jupiter2005ster/
- A hozzászóláshoz be kell jelentkezni