1

背景

我有一个prog从标准输入获取输入并对其进行处理的程序。它还需要一个标志-f FILE来查找操作期间使用的数据文件。

我希望创建一个 bash 脚本来充当这个程序的包装器,这样就不需要使用这个标志。所以我写了以下脚本progwrap.sh

#!/bin/bash

/path/to/prog -f /path/to/data

这可以解决基本功能的问题,这样我就可以做类似的事情

$ cat somedata.txt | progwrap.sh

并得到我想要的。

目标

现在,事实证明,prog它还需要其他一些形式的标志-h-u等...我希望能够将这些传递给,progwrap.sh以便它们反过来传递给prog。所以我修改progwrap.sh如下:

#!/bin/bash

/path/to/prog -f /path/to/data "$@"

允许它接受参数并据说将它们输入到prog脚本中。

问题

然而,这在某种程度上是行不通的,因为:

$ cat somedata.txt | progwrap.sh -h

产生完全相同的输出

$ cat somedata.txt | progwrap.sh

这不是正确的行为(即,由于将 -h 标志传递给 progwrap.sh,输出应该以不同的格式输出)。

事实上,提供没有任何支持且通常会导致抛出错误的progwrap无意义参数并没有任何作用。我得出结论,传递给的参数被脚本中的调用忽略。progprogprogwrap.shprog

问题

我究竟做错了什么?如何将标志传递给progwrap.sh以便这些标志随后prog在我的脚本中传递给?

4

1 回答 1

1

感谢用户 melpomene 的帮助。事实证明,上面的脚本可以很好地传递标志,而错误在于prog忽略-f File. 该脚本在修改为:

#!/bin/bash

/path/to/prog "$@" -f /path/to/data

谢谢!

PS。在我的辩护中,这种标志行为没有被prog.

于 2012-11-29T14:19:55.847 回答