bash 中的特殊变量

g_p*_*g_p 4 bash

我知道这些是 bash 使用的一些特殊变量。但我无法理解他们。谁能解释这些变量是什么以及如何使用它们?

$*

$@

$#

The*_*hwa 11

当您从命令行调用 shell 脚本时,您可以向它传递称为位置参数的附加参数。例如,在命令行中输入以下内容来运行脚本时myscript.sh

./myscript.sh param1 param2

变量将具有以下值:

"$0" = "./myscript.sh"
"$1" = "param1"
"$2" = "param2"
Run Code Online (Sandbox Code Playgroud)

该变量$#给出了参数的数量,不包括命令。在这个例子中:

"$#" = 2

该变量$*将所有参数列为一个单词(添加引号以强调字符串边界):

"$*" = "param1 param2"

该变量$@将每个参数列为单独的带引号的字符串(添加引号以强调字符串边界):

"$@" = "param1" "param2"

请注意,您应该几乎总是在 bash 中引用变量,因此您应该使用"$@"而不是$@. 有关更多信息,请参阅此编程指南


Mar*_*tin 5

变量$*&$@是调用脚本(或函数,如果在函数内部)时传递的参数。

"$@" 是您通常应该使用的一个:它扩展为单独的单词,一对一用于传入的参数。

"$*" 扩展为由空格分隔的所有参数组成的单个“单词”。

(不要在没有引号的情况下使用它们;这会导致您不想处理的分词和一般混乱。)

$# 是参数的数量(因为它总是一个数字字符串,所以你是否引用它并不重要)