Permalänk
Medlem

Eval i bash

Goder kväll.
Sitter och leker lite i bash, har precis lärt mig hur IFS fungerar men hittade ett exempel som jag inte riktigt förstår.

line=$(grep $name /etc/passwd) # assuming name already set OLDIFS="${IFS}" # always back up IFS before changing IFS=: x=0 for i in $line; do eval "field${x}=\"$i\"" x=$(( x+1 )) done IFS="${OLDIFS}" echo "Shell for $name is $field6"

Hittade den på http://www.cv.nrao.edu/~jmalone/talks/bash.pdf när jag googlade på IFS.

Det jag inte förstår är raden
eval "field${x}=\"$i\

Vad gör eval? Har googlat på det också men inte förstått det. Om det går hur skulle ni ersätta den raden på lättas möjliga sätt? Jag tänkte att
field${x}=$i
skulle ge samma resultat men det gör det inte.

/Ph

Permalänk
Medlem

$ help eval eval: eval [arg ...] Read ARGs as input to the shell and execute the resulting command(s).

Den biter skapar bara massa fieldX-variabler (kolla med export efteråt så förstår du nog.