Я маю дивне поведінку з ZSH при переборі вмісту змінної. Демо в цьому випадку краще, ніж довга розмова, тому ось моя проблема:
(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 »
Я очікую, що друга ітерація матиме той же результат, що і перший. Я спробував наступне:
- чужий ZSH (такий же розподіл): працював нормально
- з bash на моїй машині: працював нормально
- видалити мій .zshrc: проблема не зник.
якщо я
files = $ (ls); для f з $ (echo $ files | tr 'n' ''); робити echo $ f-SUF; зроблено
він працює нормально. Але ще раз, якщо я захоплю результат результату луна, що надходить на tr, я отримую тільки один -SUF в кінці.
Я дійсно не маю ідеї про те, що відбувається, чи є хто-небудь поняття?
Дякую.
Деякі відомості:
- Розподіл: debian Wheezy
- zsh версія: zsh 4.3.17 (x86_64-unknown-linux-gnu)
Якщо це може бути будь-якого використання:
(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