Konstigt beteende med bash arrayer --- kan någon förklara?
Postat: 30 nov 2007, 11:19
Jag hittade ett konstigt beteenda med arrayer.
Jag skapar tre filer, en med ett mellanslag. Sedan vill jag lägga in dem i en array och loopa över dem. Rätt sätt att lösa problemet finns i progammeringstråden. Det jag undrar är vad och varför jag får den i mitt tycke konstiga utskriften...
Så här gör jag
ger
Inget konstigt.
Använder jag operatorn för att matcha alla element blir det konsigt...
ger
Hur kommer det sig att foo och "foo bar" listas två gånger?
Det borde ha något med att jag gör något fel när jag skapar arrayen, men vad?
För detta ger "rätt" svar
Jag skapar tre filer, en med ett mellanslag. Sedan vill jag lägga in dem i en array och loopa över dem. Rätt sätt att lösa problemet finns i progammeringstråden. Det jag undrar är vad och varför jag får den i mitt tycke konstiga utskriften...
Så här gör jag
Kod: Markera allt
mkdir slask
cd slask
touch foo bar "foo bar"
f=$(ls -Q)
Kod: Markera allt
echo $f
Kod: Markera allt
"bar" "foo" "foo bar"
Använder jag operatorn för att matcha alla element blir det konsigt...
Kod: Markera allt
echo ${f[*]}
Kod: Markera allt
"bar" "foo" "foo bar" "foo" "foo bar"
Det borde ha något med att jag gör något fel när jag skapar arrayen, men vad?
För detta ger "rätt" svar
Kod: Markera allt
f=($(ls -Q))
echo ${f[*]}
"bar" "foo" "foo bar"