【发布时间】:2018-06-06 18:47:03
【问题描述】:
我有一个函数get_flags,用于解析参数。我在我想要解析信息的文件中获取它,然后使用 $@ 将变量从主程序传递给函数。
看起来像这样
myprogram.sh
source arg_parser.sh
get_flags some_arguments more_arguments $@
我想要一种方法来确定没有参数传递和程序员最后忘记$@ 之间的区别。或者更好的方法是自动包含$@。
例如
myprogram.sh -f flag1 -a flag2
#inside the program
get_flags some_arguments more_arguments #$@ has values, but was forgotten
对
myprogram.sh #no arguments
#inside the program
get_flags some_arguments more_arguments $@ # $@ is present but empty
【问题讨论】:
-
为什么?函数使用不当不是您的问题...如果可以的话,很高兴进行额外检查,但我不确定我会花很多时间在这上面。
-
为什么不在你的脚本中添加
[ -z "${@}" ] && echo "Missing parameters..." && exit 1 -
旁注:你应该几乎总是使用
"$@"而不是$@,否则扩展会受到分词和路径名扩展的影响。 -
为什么不在脚本中添加
[ -z "${@}"] && echo "Missing parameters..." && exit 1来检查参数是否为空。 -
@PaulHodges 这实际上是我的问题。我为与我一起工作的人编写脚本,当他们不正确使用时,我大部分时间都是解决问题的人,所以我有必要让它们尽可能地证明白痴。