【发布时间】:2016-05-20 09:21:30
【问题描述】:
我正在尝试使 Bash 脚本严格符合 POSIX,即使用 checkbashisms -px ${script_filename} 删除任何潜在的“Bashisms”。在给定的文件中,我使用find 遍历一个目录,然后使用\0 作为分隔符,使用-print0 将每个文件路径传送到read,以便能够处理包含换行符的文件名:
find . -print0 | while read -d $'\0' inpath
do
echo "Reading path \"${inpath}\"."
done
但是,checkbashisms 不喜欢这个,因为the option -d isn't strictly POSIX-compliant:
...行 n 中可能存在的 bashism(使用 -r 以外的选项读取)
如何编写符合 POSIX 的等效代码,即使用非换行符从 find 读取输出?
【问题讨论】: