无论 find 返回什么文件名,如何使下面的脚本始终有效?
#!/bin/sh
cmds_should_always_work() {
echo "\n\n*********************************" $1
stat --printf='%n' -- "$1" || echo STATFAILED
echo "\n----------------\n"
lsattr -d -- "$1" || echo LSATTRFAILED
echo "\n----------------\n"
};
for item in $(find "$1" -maxdepth 1 -mindepth 1); do cmds_should_always_work "${item}"; done
例如,find 目录中包含新换行符的文件会中断此脚本。
此外,如果查找目录名为 $schema,则此脚本将返回父目录。脚本如何避免这种情况与必须向脚本提供和转义路径 somepath/\$schema 相比?