Ho un comportamento strano con ZSH durante l'iterazione sul contenuto di una variabile. Una demo è meglio di una lunga chiacchierata in questo caso, quindi ecco il mio problema:
(yoann@freya) test_bash » ls
file1 file2 file3
(yoann@freya) test_bash » for f in $(ls); do echo $f-SUF; done
file1-SUF
file2-SUF
file3-SUF
(yoann@freya) test_bash » files=$(ls); for f in $files; do echo $f-SUF; done
file1
file2
file3-SUF
(yoann@freya) test_bash »
Mi aspetto che la seconda iterazione abbia lo stesso risultato della prima. Ho provato quanto segue:
- ZSH di altre persone (stessa distribuzione): ha funzionato bene
- con bash sulla mia macchina: ha funzionato bene
- rimuovi il mio .zshrc: il problema persiste.
se lo faccio
file = $ (ls); per f in $ (echo $ files | tr '\ n' ''); fare l'eco $ f-SUF; fatto
funziona benissimo. Ma ancora una volta, se catturo il risultato dell'eco convogliato su tr, alla fine ottengo solo un -SUF.
Sono davvero senza idee su ciò che sta accadendo, qualcuno ha la minima idea?
Grazie.
Alcune informazioni:
- Distribuzione: debian Wheezy
- versione zsh: zsh 4.3.17 (x86_64-unknown-linux-gnu)
Se può essere di qualche utilità:
(yoann@freya) test_bash » locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=en_US.utf8