测试具有非标准文件名的脚本的“框架”

时间:2013-05-06 14:49:27

标签: bash shell

以下是一些关于某些问题的评论(特别是针对shell),基本上是以下一个或多个问题:

  • 这将对包含空格,换行符等的文件名失败,
  • 如果文件是符号链接(或不是),则会失败
  • 如果$filaneme是目录而非常规文件,则会失败,
  • 等等。

虽然我知道每个脚本都需要自己的测试环境,但是 这些是常见事物,因为脚本应该免受反对。

所以,我的目的是编写一个会创建一些目录层次结构的脚本 使用“特制”文件名进行测试。

问题是:什么“特殊”文件名适合此测试?

目前,我(脚本创建文件和目录)包含:

  • 文件名中的空格
  • 文件名中的换行符
  • 以下列之一开头的文件名:
    • -(与命令参数一样)
    • #(评论字符)
    • !(命令历史记录)
  • 包含以下内容之一的文件名:
    • | char(pipe)
    • () chars
    • *?(通配符)
  • 带有unicode字符的文件名
  • 以上所有目录
  • 指向目录的符号链接
  • 文件的符号链接

还有什么我不应该错过的想法吗?

1 个答案:

答案 0 :(得分:3)

我想到了什么:

  • 引用文件名为single和double
  • 开头的$字符
  • 多个重定向字符,例如> < << <<<
  • ~字符($ HOME)
  • the';' (作为命令分隔符)
  • 文件名\
  • 中的反斜杠
基本上,通过ascii表并测试所有字符,如果你认为你需要这个:)

另外一条评论:

  • 如果您想要堆栈溢出问题的测试脚本,您应该使用OP的内容创建一个文件(称为“基本文件”)
  • 以上所有“特殊文件”应该是上述基本文件的符号链接。使用此方法,您可以轻松修改文件的内容(您只需要更改一个 - 基本)。
  • 或者,如果符号链接不是您的解决方案,请使用hard-links

不直接关于文件名中的特殊字符,但要注意:

  • 不同的案例文件名,尤其适用于image.jpg image.JPG等图片,同一文件名只有不同的扩展名

编辑:来自评论的想法:

  • 文件名很长,文件很多,而且目录层次结构很深( tripleee