在bash脚本中向程序传递标志



背景

我有一个程序prog,它从stdin获取输入并对其执行某些操作。它还需要一个标志-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 "$@"

允许它接受参数并假定将它们提供给脚本中的CCD_ 10。

问题

然而,这在某种程度上不起作用,因为:

$ cat somedata.txt | progwrap.sh -h

产生与完全相同的输出

$ cat somedata.txt | progwrap.sh

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

事实上,为prog不支持的progwrap无意义自变量提供信息(通常会导致prog抛出错误)并没有任何作用。我得出的结论是,传递给progwrap.sh的参数被脚本中对prog的调用所忽略。

问题

我做错了什么?如何将标志传递到progwrap.sh,以便在脚本中将这些标志传递给prog

感谢用户melpomine的帮助。事实证明,上面的脚本可以传递标志,而错误在于prog忽略了-f File之后的所有标志。当修改为时,脚本运行良好

#!/bin/bash
/path/to/prog "$@" -f /path/to/data

谢谢!

PS。在我的辩护中,prog的设计者没有记录这种旗帜行为。

相关内容

  • 没有找到相关文章

最新更新