Разговор о различиях между zsh
и bash
:
С кавычками вокруг $@
и $*
, zsh
и bash
ведите себя то же, и я предполагаю, что результат является довольно стандартным среди всех оболочек:
$ f () { for i in "$@"; do echo +"$i"+; done; }; f 'a a' 'b' ''
+a a+
+b+
++
$ f () { for i in "$*"; do echo +"$i"+; done; }; f 'a a' 'b' ''
+a a b +
Без кавычек результатами является то же для $*
и $@
, но отличающийся в bash
и в zsh
. В этом случае zsh
шоу некоторое нечетное поведение:
bash$ f () { for i in $*; do echo +"$i"+; done; }; f 'a a' 'b' ''
+a+
+a+
+b+
zsh% f () { for i in $*; do echo +"$i"+; done; }; f 'a a' 'b' ''
+a a+
+b+
(Zsh обычно не разделяют текстовое использование данных IFS, если явно не требуется, но замечают, что здесь пустой аргумент является неожиданно недостающим в списке.)
Я использовал alsamixer для отключения звука канала наушников. Это решило проблему.