2017-09-08 46 views
0

bash脚本应传递到另一个脚本,这是在我的情况Python脚本它的参数:bash脚本:避免空字符串参数

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脚本中。

回答

1

"[email protected]"扩展到什么,如果没有参数,所以你可以简单地使用

python test.py "[email protected]" 

如果你想确保一个第四个参数到脚本(或更多)未传递到Python脚本,请使用bash分机号码

python test.py "${@:1:3}"