我们中的大多数人都使用Bash脚本来进行维护和某些其他任务。然而,我们并不总是熟知各种Bash选项。每当用户是Bash shell和Linux的新手时,用户往往会寻求一个预先写好的Bash脚本。这是由于一些用户发现独特的Bash字符如_, 和@这个Bash参数开始,它被用来延伸到位置参数。只要在双引号内发生扩展,每个参数都会扩展成类似于一个独立的单词。如果使用@应该被加引号才能正常工作。尽管如此,它的行为与作为独立字符串的参数类似。
我们将通过几个例子来阐述Ubuntu 20.04系统中Bash脚本中$@的功能。
例子1:
一开始,我们需要以sudo用户的身份从Ubuntu 20.04发行版中登录。登录成功后,我们将打开命令行,开始工作。要打开它,请使用 "Ctrl+Alt+T"。作为替代方法,我们也可以使用活动区,从搜索栏中找到控制台终端。正确打开后,我们将通过创建一个新的Bash文件开始在Bash中对$@进行工作。所以,我们一直在利用 "touch"查询,文件的名字是 "one.sh"。注意,Bash文件包含一个".sh"扩展名。在shell中写完以下指令后点击 "Enter"来运行它。你会在Ubuntu 20.04的主目录中找到新生成的Bash文件。
$ touch one.sh

现在,Bash文件已经生成;我们必须在编辑器中打开它来添加和编辑其中的Bash脚本。因此,我们将在终端外壳上使用 "GNU Nano"编辑器来打开它。因此,我们在shell中使用了 "nano"关键字指令,并将文件名定为 "one.sh",如下图所示。
$ nano one.sh

你需要在你的Bash文件 "one.sh"中编写以下三行脚本。我们首先在文件中添加了Bash扩展名。之后,我们在这个脚本中使用了三个echo语句来使用三个特殊字符并输出各自的结果。请注意,"#**"字符被用来输出将由用户在shell中添加的输入或参数字符串的总数。**@"字符用于在终端上显示这三个值或参数,而"$?"字符有一个特殊的任务,如果最后一条命令变得成功,则返回0。在Bash中,"Ctrl+S"快捷键经常被用来保存Bash文件,同时在某种 "nano"编辑器中打开。所以,保存你的one.sh文件,并使用 "Ctrl+X"将其返回到终端。

现在,新创建的Bash脚本已经在我们的系统中得到了保存和保护;现在是使其可执行的时候了。你必须注意,在执行文件的过程中,像$@这样的字符会在终端中获取参数值。因此,在你的Ubuntu shell中使用 "bash"关键字查询,文件名为 "one.sh",并按所述分配参数值。你可以从下面的快照中看到,我们为Bash脚本one.sh提供了3个字符串类型的参数值,例如:Aqsa、Rimsha和Awan。输出的结果是显示3行输出。第一行显示的是加入的总参数数。第二行显示的是用户传递的参数值。最后,第三行显示返回值为0,因为第二行的命令已经成功了。
$ bash one.sh Arg1 Arg2 Arg3

例子2:
为了进一步理解$@字符和功能的概念,我们需要在文章中再举一个例子。因此,我们将用GNU nano编辑器打开同一个文件,"one.sh"。为此,我们尝试了以下指令,并点击键盘上的 "Enter "按钮继续。
$ nano one.sh

由于该文件现在已经打开,我们将在其中添加一个新的、更新的Bash脚本。这一次,我们一直在使用一个简单的Bash脚本来阐述@的参数。每个项目都通过echo语句显示在终端上。在保存文件之后,我们返回到控制台执行Bash脚本。

在Bash指令中,我们将5个字符串类型的参数与文件名 "one.sh"一起传递。在按下 "Enter"键后,终端已经分别显示了每个参数。
$ bash one.sh Arg1 Arg2 Arg3 Arg4 Arg5

例子3:
让我们仔细看看上面阐述的另一个同样的@和@字符的作用。要打开已经创建的文件 "one.sh",请在Ubuntu 20.04的控制台中编写并运行以下指令。
$ nano one.sh

我们已经更新了上面的示例代码。我们所做的只是在for循环中为"$*"添加相同的代码。我们保存了Bash代码并退出了该文件。

在执行过程中,由于@字符的输出。
$ bash one.sh Arg1 Arg2 Arg3 Arg4 Arg5

例子4:
在我们的最后一个例子中, 我们将通过函数和循环来解释$@字符的功能.因此,为了更新Bash脚本,我们用shell中的 "nano"编辑命令再次打开了 "one.sh"文件,如下所示。
$ nano one.sh

这一次,我们一直在使用方法foo()来打印各自方法中传递的特殊字符的参数,直到它什么都没有得到。方法 "Dollar1"用于*字符的运作。这两个方法都包含调用foo()方法,分别用特殊字符*来传递参数。Dollar1和Dollar2方法是在echo语句后调用的,同时都包含相同的三个参数作为其参数值。

代码的执行分别显示了Dollar1和Dollar2方法的输出。使用@的输出,而 "使用*字符的输出。
$ bash one.sh

总结
本指南介绍了如何在Bash脚本中使用@和其他与美元相关的字符之间的区别,以使其更容易理解。 我们希望你在执行时也能享受到它。