Bash 脚本:避免空字符串参数

Bash script: Avoid empty string arguments

A bash 脚本应将其参数传递给另一个脚本,在我的例子中是 python 脚本:

python test.py "" "" ""

python 脚本使用 argparse 库,如果存在空字符串参数,将 return 出错,即调用父脚本时使用的参数少于 3 个。 我在示例中使用 python 脚本的原因是,如果存在未使用的 "empty string" 值参数,它可能无法在子 shell 脚本中被识别。

避免错误的一种方法是检查参数的数量 $# 并明确处理每个可行的情况:

if [ $# -eq 0 ]
then
  python test.py
elif [ $# -eq 1 ]
then
  python test.py ""
elif [ $# -eq 2 ]
then
  python test.py "" ""
else
  python test.py "" "" ""
fi

请注意,我必须引用参数,因为它们可能包含空格。

这个(臃肿的)解决方案有哪些替代方案?

解决方案不应依赖于传递整个参数列表。可能需要更改参数的顺序或将其他局部变量添加为 python 脚本的参数。

如果没有参数,

"$@" 将展开为空,因此您可以简单地使用

python test.py "$@"

如果您想确保脚本的第 4 个参数(或更多)没有传递给 Python 脚本,请使用 bash 扩展

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