我试图通过以下方式将几个参数从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
答案 0 :(得分:4)
出现bash中的错误是因为您在=
周围放置了空格。你应该使用
history_file="$1"
而不是
history_file = "$1"
当你在那里放置空格时,Bash认为该行是一个命令调用并尝试运行history_file
作为命令。
在Python脚本中,您只需使用:
args = [pathToScript, input1, input2, ....]
而不是你拥有的。这更简单,如果参数包含空格(当前代码将失败),它将正常工作。构建input_string
字符串没有意义,只能将其拆分回以下行。