脚本开发中的问题解决与流程控制
1. 脚本开发中的问题排查
在脚本开发过程中,会遇到各种各样的问题,下面将详细介绍一些常见问题及解决方法。
1.1 文件删除脚本问题
在文件删除脚本中,有一段代码如下:
if ! cd "$dir_name"; then
echo "Cannot cd to '$dir_name'" >&2
exit 1
fi
if ! rm *; then
echo "File deletion failed. Check results" >&2
exit 1
fi
这段代码会检查目录名是否为现有目录,以及 cd 命令是否执行成功。若其中任何一个操作失败,就会向标准错误输出描述性错误信息,并以退出状态 1 终止脚本,表示操作失败。
不过,该文件删除脚本还存在一个更隐蔽但可能非常危险的问题。Unix 及其类似操作系统在文件名设计上存在严重缺陷,对文件名的限制极为宽松。实际上,文件名中不能包含的字符只有两个:一个是 / ,用于分隔路径名的元素;另一个是空字符(零字节),用于在内部标记字符串的结尾。其他字符,如空格、制表符、换行符、前导连字符、回车符等都是合法的。
特别需要注意的是前导连字符。例如,名为 -rf ~ 的文件是完全合法的。当将这样的文件名传递给 rm 命令时,就可能引发问题。为了避免这个问题,需要将文件删除脚本中的 <
超级会员免费看
订阅专栏 解锁全文
4840

被折叠的 条评论
为什么被折叠?



