背景
我有一个程序prog
,它从stdin获取输入并对其执行某些操作。它还需要一个标志-f FILE
来查找操作期间使用的数据文件。
我希望创建一个bash脚本来充当这个程序的包装器,这样就不需要使用这个标志了。所以我写了以下脚本progwrap.sh
:
#!/bin/bash
/path/to/prog -f /path/to/data
为基本功能提供了技巧,因此我可以执行类似
的操作$ cat somedata.txt | progwrap.sh
得到我想要的东西。
目标
现在,事实证明prog
还会采用-h
,-u
等格式的其他标志...我希望能够将这些标志传递给{{1}这样他们就被转移到了progwrap.sh
。所以我修改了prog
如下:
progwrap.sh
允许它接受参数并假设将它们提供给脚本中的#!/bin/bash
/path/to/prog -f /path/to/data "$@"
。
问题
然而,这在某种程度上是行不通的:
prog
产生与
完全相同的输出$ cat somedata.txt | progwrap.sh -h
这不是正确的行为(即,由于-h标志被传递给progwrap.sh,输出应该以不同的格式出现。)
事实上,提供$ cat somedata.txt | progwrap.sh
无意义的参数,progwrap
没有支持,并且通常会导致prog
抛出错误,但什么都不做。我的结论是,在脚本中调用prog
会忽略传递给progwrap.sh
的参数。
问题
我做错了什么?如何将标志传递给prog
,以便这些标志在我的脚本中传递给progwrap.sh
?
答案 0 :(得分:1)
感谢用户使用melpomene提供帮助。事实证明,上面的脚本适用于传递标志,错误在于prog
忽略-f File
之后的所有标志。修改为:
#!/bin/bash
/path/to/prog "$@" -f /path/to/data
谢谢!
PS。在我的辩护中,prog
的设计者没有记录这种标志行为。