背景
我有一个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
无意义参数并没有任何作用。我得出结论,传递给的参数被脚本中的调用忽略。prog
prog
progwrap.sh
prog
问题
我究竟做错了什么?如何将标志传递给progwrap.sh
以便这些标志随后prog
在我的脚本中传递给?