使用奇怪的文件名

使用奇怪的文件名

无论 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 相比?

相关内容