如何在bash脚本中捕获Python的输入

时间:2013-02-04 15:09:13

标签: python bash

我试图通过以下方式将几个参数从python脚本传递给bash脚本:

input_string = pathToScript + " " + input1 + " " + input2 + " " + input3 + " " + input4 + " " + \
input5 + " " + input6 + " "  + input7 + " " + input8 + " "  + input9 + " "  + input10

args =  shlex.split(input_string)

p = subprocess.Popen(args)

其中所有inputX都是字符串。每个参数都应传递给脚本,脚本的路径存储在变量pathToScript中。我现在希望能够像往常一样在bash脚本中捕获这些参数:

#No input check yet...
history_file = "$1"
folder_history_file = "$2"
folder_bml_files = "$3"
separate_temperature = "$4"
separate_temperature_col_index = "$5"
separate_sight = "$6"
separate_sight_col_index = "$7"
separate_CO = "$8"
separate_CO_col_index = "$9"
separate_radiation = "$10"

这会导致所有这些行的错误如line 61: separate_CO_col_index: command not found,并且错误的出现方式与排序行的方式不同。换句话说,第61行上的这种错误有时会在第60行之前被捕获,它似乎来自Eclipse中的输出(我在Eclipse中使用PyDev)。

是不是可以像这样运行bash脚本?我试过按照ch中的方法。 17.1.1.1这里,但我可能没有正确理解它:python docs

1 个答案:

答案 0 :(得分:4)

出现bash中的错误是因为您在=周围放置了空格。你应该使用

history_file="$1"

而不是

history_file = "$1"

当你在那里放置空格时,Bash认为该行是一个命令调用并尝试运行history_file作为命令。


在Python脚本中,您只需使用:

args = [pathToScript, input1, input2, ....]
而不是你拥有的。这更简单,如果参数包含空格(当前代码将失败),它将正常工作。构建input_string字符串没有意义,只能将其拆分回以下行。