【发布时间】:2015-11-19 19:25:35
【问题描述】:
通过 shellcheck.net 运行脚本有人告诉我 "for loops over find output are fragile." 很公平,带空格的文件名总是很棘手。
建议的替换代码(其中一个)是这样的:
while IFS= read -r -d '' file
do
#do stuff
done < <(find . -name '*' -print0)
我很熟悉 < 操作符,它用于将文本从文件输入到命令中,很明显 find 的结果被输入到循环中。所以当我第一次看到这个时,我认为它是一些格式问题的受害者,并尝试“清理”最后一行。但是删除< < 之间的空格会导致语法错误,就像在<( 中添加一个空格一样。
那么< <(cmd) 构造在做什么呢?抱歉,如果这是一个简单或多余的问题,搜索这些东西并不容易!
【问题讨论】:
标签: bash syntax io-redirection