linux 检查传入的参数的脚本,检查传递给Bash脚本的参数数量

这篇博客探讨了在Bash脚本中如何正确地检查参数数量,避免单词拆分和路径名扩展问题。建议使用[[...]]代替[...]进行条件测试,因为它提供了更安全的语法和额外的功能,如模式匹配和正则表达式。文章还提到了在遇到非法参数时,如何通过echo和exit来提示用户并退出脚本,同时讨论了返回值的合理性,推荐使用exit 2表示无效参数。
摘要由CSDN通过智能技术生成

就像任何其他简单命令一样,[ ... ]或者test其参数之间需要空格。

if [ "$#" -ne 1 ]; then

echo "Illegal number of parameters"

fi

要么

if test "$#" -ne 1; then

echo "Illegal number of parameters"

fi

意见建议

在Bash中时,最好使用[[ ]]代替,因为它不会对单词的变量进行单词拆分和路径名扩展,除非引用是表达式的一部分,否则可能不需要引用。

[[ $# -ne 1 ]]

它还具有其他一些功能,例如无引号的条件分组,模式匹配(带有的扩展模式匹配extglob)和正则表达式匹配。

以下示例检查参数是否有效。它允许一个或两个参数。

[[ ($# -eq 1 || ($# -eq 2 && $2 == )) && $1 =~ ]]

对于纯算术表达式,使用(( ))一些仍可能会更好,但它们仍然可能在[[ ]]与它的算术运算符喜欢-eq,-ne,-lt,-le,-gt,或-ge通过将表达为一个字符串参数:

A=1

[[ 'A + 1' -eq 2 ]] && echo true  ## Prints true.

如果您还需要将其与其他功能结合使用,那将很有帮助[[ ]]。

退出脚本

在将无效参数传递给脚本时使脚本退出也是合乎逻辑的。这已经提出的意见通过ekangas但有人编辑这个答案与把它-1作为返回值,所以我还不如做是正确的。

-1尽管没有被Bash接受为Bash的参数,但exit没有明确记录,也没有权利用作常见建议。 64也是最正式的值,因为它是在sysexits.hwith中定义的#define EX_USAGE 64 /* command line usage error */。大多数类似的工具ls也会返回2无效的参数。我也曾经返回2过自己的脚本,但是最近我不再真正在意它,只使用1了所有错误。但让我们放在2这里,因为它是最常见的,并且可能不是特定于操作系统的。

if [[ $# -ne 1 ]]; then

echo "Illegal number of parameters"

exit 2

fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值