bash脚本使用参数调用另一个程序

时间:2013-10-26 14:54:39

标签: bash

我编写了一个bash脚本,通过传递一个参数调用另一个脚本。在这种情况下,参数是一个包含几行的文件。

我这样做:

#! /bin/bash

`python script.py -i input.txt /path/to/somefile`

现在,input.txt包含如下行:

something 1
something 2
something 3

这里的问题是input.txt的每一行都由bash脚本作为程序本身进行评估,而不是像原来那样传递给script.py程序。

所以,script.py程序需要一个包含3行作为输入的文件,如上所示,而是接收一些其他输入(评估内容为1,结果为2等等)。

如何将此文件作为参数传递给script.py?

如果我在bash脚本之外调用script.py,如下所示:

python script.py -i input.txt /path/to/somefile

效果很好。 script.py一次从input.txt读取一行并对其进行操作。

1 个答案:

答案 0 :(得分:3)

删除 python 命令周围的反引号... 我认为你误解了会发生什么, python 输出被评估为一个命令,而不是input.txt

反引号执行命令替换,与$( ... )相同。举例说明了herehere。通常它用作命令的参数,如ls -l $(cat filelist.txt),但它也可以作为整个命令。虽然如果你盲目地执行某些程序的任何输出,你最好确保你相信输出是正确的,值得信赖并且没有任何允许shell命令注入的安全漏洞(读:不要这样做; - )......