我有一个需要运行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']
如何解决此问题?
答案 0 :(得分:0)
这真的很简单。引用shell命令中的参数:
$ python pgm32.py "$args"
你自己已经这样做了:
但是当我直接从命令行调用python脚本时,和 传递像"打开驱动器"或者打开\驱动器,脚本 sys.arv = [' pgm32.py','打开驱动器']
这是有效的,因为在这些行中你保护了空间免受shell分裂;在其他例子中你没有。它完全与shell有关,与Python无关。
答案 1 :(得分:-1)
答案 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.