我试图让bash脚本调用带有可选参数的python脚本。
当此参数相关时,必须为其提供前缀标记(例如-o "value"
)。
由于该值包含空格,因此我在其周围放置了引号。但是,在此用例中,它无效。
任何黑客都可以解决它?
test.py
#!/usr/bin/env python
import argparse
def main():
parser = argparse.ArgumentParser()
parser.add_argument('-o', '--options', default='', type=str, required=False)
args = parser.parse_args()
print args.options
if __name__ == '__main__':
main()
tests.sh
#!/bin/bash
export options="A B C"
export extra_args=""
if [ -n "${options}" ]; then
export extra_args="${extra_args} -o \"${options}\""
fi
./tests.py $extra_args
答案 0 :(得分:2)
${extra_args}
中的引号是字面的,不是由bash解释的,bash扩展只运行一次。
看起来你需要一个数组,导出只是告诉shell必须将变量传递给子进程环境。
extra_args=()
if [ -n "${options}" ]; then
extra_args+=( -o "${options}" )
fi
./tests.py "${extra_args[@]}"