脚本中的通配符

时间:2011-08-14 18:21:44

标签: bash scripting

可以运行

 evince ./result/demo_1000000_10000*.ps
shell窗口上的

。但是当我把它放入脚本文件,然后运行该文件时,它找不到所有这些文件./result/demo_1000000_10000*.ps ...这里*是一个通配符,以下是脚本。

evince ./result/demo_1000000_10000"*.ps"

将命令放入脚本时是否应该进行任何更改?

2 个答案:

答案 0 :(得分:4)

它应该在脚本或命令行中以相同的方式工作。引号可防止扩展通配符。只需从脚本中删除它们即可。 (为什么你首先添加它们?)

答案 1 :(得分:0)

如果命令从显示的提示符运行,那么如果调用进程的当前目录相同,它也应该从shell脚本运行 - 具有完全相同的表示法。如果您希望脚本版本与非脚本版本相同,则没有理由在脚本版本中包含引号。如果您在命令行中运行引用的版本,它将失败与脚本版本中的引用版本相同。

但是,在脚本中,您必须担心计划处理的Postscript文件是否位于正确的位置。有时,脚本使用绝对路径名,有时脚本使用cd将目录更改为正确的位置,有时会有一个参数或环境变量来定位文件。

因此,如果小心使用,您不必更改脚本的任何内容 - 但是有很多方法可以阻止脚本工作。其中一个是在通配符周围添加引号。