在bash中将字符串作为参数发送

时间:2014-07-28 17:13:12

标签: bash

我有一个字符串:

arguments="2 3 4"

我想将这些参数发送到文件file.py,例如,

python file.py 2 3 4

我如何只使用字符串?下面的代码片段不起作用(它只发送一个参数,整个字符串本身..)。

python file.py $arguments ?

2 个答案:

答案 0 :(得分:4)

在bash中(与zsh相反),该代码应该按给定的方式工作。也就是说,您可以尝试确保IFS包含空格:

IFS=' '

或者,将其重置为默认值:

unset IFS

...在运行该字符串之前。 IFS确定在shell拆分中使用哪些字符,因此如果它不包含空格,则不会展开以空格分隔的参数。


或者 - 最好 - 使用数组:

arguments=( 2 3 4 )
python file.py "${arguments[@]}"

在该格式中,您可以使用包含空格的参数:

arguments=(2 "thirty three" 4 )

...由于BashFAQ #050中记录的原因而无法正常工作。

答案 1 :(得分:1)

最好使用BASH数组:

arguments=(2 3 4)
python file.py "${arguments[@]}"