检查 Bash 中的参数数量
有时您想要获取执行时传递给脚本的参数的确切数字。
为了这个目的,bash 有一个特殊的变量($#
),它打印在执行过程中传递给 shell 脚本的参数总数。
因此,在本指南中,我将向您介绍如何使用变量$#
获取 bash 中传递的参数总数的各种示例。
如何检查 bash 中的参数数量
要检查参数的数量,您只需将以下行附加到您的 bash 脚本中:
echo $#
但为了使其更具可读性,您可以打印额外的行以供参考,例如:
echo "The total number of arguments are:"
echo $#
供您参考,这里我创建了一个名为的示例 hello world 脚本,Hello.sh
它将计算参数的数量:
#!/bin/bash
echo " Hello World!"
#The argument counter
echo "The total number of arguments are:"
echo $#
完成后,使用 chmod 命令使文件可执行:
chmod +x Hello.sh
现在,您可以使用所需数量的参数执行脚本:
./Hello.sh -arg1 -arg2 -arg3
你当然可以将两者结合起来:
echo "The total number of arguments are: $#"
但是如果你还想打印传递的参数怎么办?好吧,你可以参考我将要向你展示的三种方法。
检查 bash 中传递的参数数量和参数
因此,如果您想查找参数的数量(包括传递给脚本的参数),这里就有。
我将引导您通过三种方式查看传递给 bash 脚本的参数:
- 使用变量来存储传递的参数(有一个很大的缺点)
- 使用
@
变量 - 使用
*
变量
1. 使用变量存储传递的参数
在这种方法中,您必须分配将存储给定参数的变量给 Bash 脚本。
因此,如果您想使用此方法,您所要做的就是按照以下方式回显各种变量:
echo $1 $2 $3
这里,我使用了 3 个变量,所以如果参数超过 3 个,那么超过 3 个的变量都会被删除。
因此最终的脚本将如下所示:
#!/bin/bash
echo "Hello World!"
echo $1 $2 $3
# The argument counter
echo "The total number of arguments are:"
echo $#
现在,如果您尝试使用所需数量的参数执行脚本,它也将打印传递的参数:
但是如果我传递了 3 个以上的参数,它仍然只会显示 3 个参数,因为只有 3 个变量需要存储(当然,您可以使用更多变量):
因此,如果您想避免分配大量变量以确保安全,您可以参考接下来的两种不需要使用变量的方法。
2.使用@变量
使用这种方法,您不再需要手动添加变量来存储参数。特殊的 bash 变量$@ 存储所有参数。
要使用此方法,您只需回显变量,@
如下所示:
echo $@
最终的脚本将会是这样的:
#!/bin/bash
echo "Hello World!"
echo $@
# The argument counter
echo "The total number of arguments are:"
echo $#
完成后,您可以传递所需数量的参数,它将打印所有参数,包括数字:
3. 使用*
变量
这与上面的方法类似,但使用变量*
。唯一的区别是它将整个参数存储为单个字符串。不过在大多数情况下它仍然会得到相同的结果。
要使用此方法,您必须*
按如下所示回显变量:
echo $*
完成此操作后,脚本应如下所示:
#!/bin/bash
echo "Hello World!"
echo $*
# The argument counter
echo "The total number of arguments are:"
echo $#
现在,如果您使用所需数量的参数执行脚本,它将为您提供一系列参数以及传递了哪些参数:
就是这样!
刚刚开始使用 bash?
还有许多其他具有特殊含义的变量。你也应该检查一下。
如果您有任何疑问,请在评论中告诉我。