从shell脚本运行的python脚本中无法运行的转义序列

时间:2015-06-19 21:47:21

标签: python bash shell

我有一个需要运行python脚本的shell脚本。 python脚本可以传递一个参数。

python pgm32.py $args

但是当传递的参数有一个转义序列或者我把它包含在引号中时,python脚本无法识别它。

例如说args包含"Open drive"Open\ drive 然后分别是python脚本sys.argv=['pgm32.py', '"Open', 'drive"']sys.argv=['pgm32.py', '"Open', 'drive"']

但是当我直接从命令行调用python脚本并传递"Open drive"Open\ drive这样的参数时,脚本的sys.arv=['pgm32.py', 'Open drive']

如何解决此问题?

3 个答案:

答案 0 :(得分:0)

这真的很简单。引用shell命令中的参数:

$ python pgm32.py "$args"

你自己已经这样做了:

  

但是当我直接从命令行调用python脚本时,和   传递像"打开驱动器"或者打开\驱动器,脚本   sys.arv = [' pgm32.py','打开驱动器']

这是有效的,因为在这些行中你保护了空间免受shell分裂;在其他例子中你没有。它完全与shell有关,与Python无关。

答案 1 :(得分:-1)

这有效:

eval python pgm32.py $args

有关Setting an argument with bash的更多详情 谢谢@Barmar。

答案 2 :(得分:-1)

假设这是Bash,您可以使用数组变量。

declare -a args                      # Make args an array.
args=("Open Drive" -d output_dir)    # Assign three elements.
python pgm32.py "${args[@]}"         # Pass to pgm32.py as array.
相关问题