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脚本的参数。
答案 0 :(得分:1)
"$@"
会扩展为空,所以您只需使用
python test.py "$@"
如果要确保脚本的第4个参数(或更多)未传递给Python脚本,请使用bash
扩展名
python test.py "${@:1:3}"