zsh相比bash在写脚本上的优点: 对空格的处理
zsh语法我觉得比bash要强. 我猜测, 之后写脚本, 我会优先考虑用zsh解释.
由于bash对空格的谜一样的处理, 之前能用perl写我都用perl写, 现在zsh也一定程度上解决了这个问题. 举个例子:
book_prefix="$HOME"/Documents/Book
for file_path in $@; do
tmp_var=${file_path##*/}
new_path=$book_prefix/${tmp_var/.epub/.pdf}
echo "${file_path}" "${new_path}"
done
用bash执行bash test.sh ~/Downloads/*.epub
的输出(节选):
/Users/quebec/Downloads/卡拉马佐夫兄弟(耿济之译) /Users/quebec/Documents/Book/卡拉马佐夫兄弟(耿济之
)
by /Users/quebec/Documents/Book/by
陀思妥耶夫斯基 /Users/quebec/Documents/Book/陀思妥耶夫斯基
(z-lib.org).epub /Users/quebec/Documents/Book/(z-lib.org).pdf
原本的书名是"卡拉马佐夫兄弟(耿济之译) by 陀思妥耶夫斯基 (z-lib.org).epub". 可以看到, bash把这个都拆了.
用zsh执行zsh test.sh ~/Downloads/*.epub
的输出(节选):
/Users/quebec/Downloads/卡拉马佐夫兄弟(耿济之译) by 陀思妥耶夫斯基 (z-lib.org).epub /Users/quebec/Documents/Book/卡拉马佐夫兄弟(耿济之译) by 陀思妥耶夫斯基 (z-lib.org).pdf
正常输出.
我曾听说, 虽然zsh交互比bash好, 但是zsh执行脚本不如bash, 很好奇是哪里不如. 难道是bash更贴近古董sh?