Konstigt beteende med bash arrayer --- kan någon förklara?

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

Konstigt beteende med bash arrayer --- kan någon förklara?

Inlägg av mcNisse »

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

Kod: Markera allt

mkdir slask
cd slask
touch foo bar "foo bar"
f=$(ls -Q)

Kod: Markera allt

echo $f
ger

Kod: Markera allt

"bar" "foo" "foo bar"
Inget konstigt.
Använder jag operatorn för att matcha alla element blir det konsigt...

Kod: Markera allt

echo ${f[*]}
ger

Kod: Markera allt

"bar" "foo" "foo bar" "foo" "foo bar"
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

Kod: Markera allt

f=($(ls -Q))
echo ${f[*]}
"bar" "foo" "foo bar"
KDE 4.5 SC är ute i det fria!!! Tjoho

Stagnation is good for nobody - after all if you don't progress you end up with gnome
Användarvisningsbild
zero gravity
Wikiadmin
Inlägg: 2504
Blev medlem: 15 apr 2006, 15:37
OS: Arch Linux
Ort: Bohuslän
Kontakt:

SV: Konstigt beteende med bash arrayer --- kan någon förklara?

Inlägg av zero gravity »

Jag lyckas inte upprepa ditt problem:

Kod: Markera allt

mkdir slask
cd slask/
touch foo bar "foo bar"

f=$(ls -Q)
echo $f
"bar" "foo" "foo bar"

echo ${f[*]}
"bar" "foo" "foo bar"

Abusus non tollit usum
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

SV: Konstigt beteende med bash arrayer --- kan någon förklara?

Inlägg av mcNisse »

Konstigt.. eller bra. Jag tycker det beteende som uppvisas på min maskin liknar en bug.

Kan det vara att vi kör olika versioner av bash? Jag kör feisty fawn.
bash --version
GNU bash, version 3.2.13(1)-release (i486-pc-linux-gnu)
KDE 4.5 SC är ute i det fria!!! Tjoho

Stagnation is good for nobody - after all if you don't progress you end up with gnome
Användarvisningsbild
zero gravity
Wikiadmin
Inlägg: 2504
Blev medlem: 15 apr 2006, 15:37
OS: Arch Linux
Ort: Bohuslän
Kontakt:

SV: Konstigt beteende med bash arrayer --- kan någon förklara?

Inlägg av zero gravity »

bash --version
GNU bash, version 3.2.25(1)-release (i686-pc-linux-gnu)
Abusus non tollit usum
Skriv svar

Återgå till "Terminalforum"