sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #85959
Re: Bash-mystik - eller er det xview der driller ?
> fra find(1):
>
> -print0
> True; print the full file name on the standard
> output, followed
> by a null character (instead of the
> newline character that
> `-print' uses). This allows file names that
OK, jeg begynder at se den fordrejede logik bag det
her. Jeg kørte nedenstående
PARAMS=`for image in *.jpg; do echo \"$image\";
done`
echo "Liste-udgave"
echo "$PARAMS"
echo
echo "One-liner udgave"
echo $PARAMS
echo
og får følgende output
Liste-udgave
"01 jan.jpg"
"02 feb.jpg"
One-liner udgave
"01 jan.jpg" "02 feb.jpg"
så `cmd` returnerede noget ganske andet end jeg naivt
forventede. OK, for at være sikker på at have en ren
tekststreng i min variabel gjorde jeg dette:
$ PARAMS1="\"01 jan.jpg\""
$ PARAMS2="\"02 feb.jpg\""
$ PARAMS="$PARAMS1 $PARAMS2"
$ echo $PARAMS
"01 jan.jpg" "02 feb.jpg"
men jeg kan stadig ikke bruge den simpelt med en anden
kommando:
$ ls -l $PARAMS
/bin/ls: "01: No such file or directory
/bin/ls: jan.jpg": No such file or directory
/bin/ls: "02: No such file or directory
/bin/ls: feb.jpg": No such file or directory
$ ls -l "$PARAMS"
/bin/ls: "01 jan.jpg" "02 feb.jpg": No such file or
directory
Det eneste der virker er
$ echo $PARAMS | xargs ls -l
-rw-r--r-- 1 vmware users 0 2005-12-01 18:45 01
jan.jpg
-rw-r--r-- 1 vmware users 0 2005-12-01 18:45 02
feb.jpg
Så dobbelt-pingede navne bliver altså opfattet vidt
forskelligt afhængigt af hvordan man lige sender dem
rundt. Nogle gange synes bash at ting inde i
dobbelt-pinger skal sendes direkte videre og andre
gange fortolker den og deler op på mellemrum uagtet at
navnene er beskyttet af dobbelt-pinger.
Det kan godt være at det er konsistent opførsel, men
det er altså dybt ulogisk. Er der nogen der kan give
en logisk sammenhængende forklaring på bash's opførsel
? Eller er svaret bare: Skriv alle dine scripts i
Python :-) ?
Mvh
-- Jan Holst
__________________________________
Yahoo! Music Unlimited
Access over 1 million songs. Try it free.
http://music.yahoo.com/unlimited/
Follow ups
References