命令行解析器在sh中调用python时无法处理空格

时间:2015-10-13 16:14:27

标签: python shell command-line

a.py:
for arg in sys.argv:
    print arg

b.sh:
python a.py $*
情况1:

python a.py "123 456"

得到:

123 456

情况2:

/bin/sh b.sh "123 456"

得到:

123

456

似乎" 123 456"将削减两个args,我如何修改b.sh,使a.py可以治疗" 123 456"作为一个arg。

2 个答案:

答案 0 :(得分:5)

你需要引用:

python a.py "$*"

此外,如果您使用"$@"代替"$*",它将扩展为多个参数。

答案 1 :(得分:0)

与我的评论相关的Argparse示例。大大简化了所需的腿部工作

import argparse

parser = argparse.ArgumentParser(description='Test ')
parser.add_argument('first',help="The First argument", type=str)
parser.add_argument('second',help="the second argument",type=str)

args = parser.parse_args()