У меня странное поведение с 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: проблема не устранена.
если я сделаю
файлы = $ (Ls); для f в $ (echo $ files | tr '\n' ''); do 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