【发布时间】:2023-03-06 04:15:01
【问题描述】:
在使用 bash 和多字参数时,也许有人可以向我解释以下意外结果?当我传递这样一个不带引号的echo 参数时,我得到:
> for i in *.jpg; do tmp=`basename -s .jpg $i`; echo $tmp; done
25 Chaos auf Schloss Burgeck
26 Die kaiserliche Urkunde
[...]
但是当我添加引号时,我得到以下结果:
> for i in *.jpg; do tmp=`basename -s .jpg $i`; echo "$tmp"; done
25
Chaos
auf
Schloss
Burgeck
26
Die
kaiserliche
Urkunde
[...]
发生了什么事?这两个输出都无法用于进一步处理,例如 mdkir。
【问题讨论】:
-
如果您的文件名称中有空格,那么正确的工具是 find,而不是 globbing。
-
您看到不同输出的原因是因为使用引号,特殊字符如 \n \t 等受到尊重。
-
@MatiasBarrios 我不敢苟同。处理带有空格的路径,尤其是
find返回的换行符比使用通配符要困难得多。find也较慢。