【发布时间】:2018-02-17 07:33:40
【问题描述】:
一个 bash 脚本应该将它的参数传递给另一个脚本,在我的例子中是一个 python 脚本:
python test.py "$1" "$2" "$3"
python 脚本使用 argparse 库,如果存在空字符串参数,即使用少于 3 个参数调用父脚本,将返回错误。 我在示例中使用 python 脚本的原因是,如果存在未使用的“空字符串”值参数,它可能不会在辅助 shell 脚本中被识别。
规避错误的一种方法是检查参数的数量$# 并明确处理每个可行的情况:
if [ $# -eq 0 ]
then
python test.py
elif [ $# -eq 1 ]
then
python test.py "$1"
elif [ $# -eq 2 ]
then
python test.py "$1" "$2"
else
python test.py "$1" "$2" "$3"
fi
请注意,我必须引用参数,因为它们可能包含空格。
这个(臃肿的)解决方案有哪些替代方案?
解决方案不应依赖于将参数列表作为一个整体进行传递。可能需要更改参数的顺序或将其他局部变量作为参数添加到 python 脚本。
【问题讨论】:
-
你也可以
python test.py $1 $2 $3 $4,如果你是...hrm...保证其中任何一个都没有空格。
标签: bash shell escaping argparse spaces