Bash Shell 脚本中的特殊变量
最近,我介绍了如何在 bash 中使用参数的数量,其中涉及使用$#
变量,它是 bash 的特殊变量之一。
在本指南中,我将带您了解所有这些特殊的 bash 变量。我将在本教程的后面部分分享脚本示例。
Bash 中的特殊变量
快速查看一下 bash shell 中的特殊变量:
特殊变量 | 描述 |
---|---|
$0 |
获取当前脚本的名称。 |
$# |
获取执行 bash 脚本时传递的参数数量。 |
$* |
为您提供包含每个命令行参数的字符串。 |
$@ |
它将每个命令行参数的列表存储为一个数组。 |
$1-$9 |
存储前 9 个参数。 |
$? |
获取最后一个命令或最近执行的进程的状态。 |
$! |
显示最后一个后台命令的进程 ID。 |
$$ |
获取当前 shell 的进程 ID。 |
$- |
它将打印当前 shell 中的当前选项集。 |
现在,让我们逐一详细地看一下。
$0:获取脚本的名称
要获取当前脚本的名称,您必须使用#0
带有 echo 的脚本中的变量。
例如,在这里,我创建了一个简单的 hello world 程序,Hello.sh
其名称应在执行时反映文件名:
#!/bin/bash
echo "Hello from sagar"
echo "Name of shell script = $0"
以下是运行时的输出:
$#:获取传递给 bash 脚本的参数数量
因此,如果您想要在执行时传递给 bash 脚本的参数数量,则必须将$#
变量包含在脚本中。
为了供您参考,我在这里制作了一个简单的 hello world 程序,其中包含以下$#
变量:
#!/bin/bash
echo "Hello from sagar"
echo "Number of arguments passed to this script = $#"
为了测试这个脚本,我在执行脚本时传递了 3 个参数:
正如您所见,它给了我传递的参数的准确数量。
$*:获取传递给 bash 脚本的参数字符串
因此,如果您想获取传递给 bash 脚本的参数字符串,您所要做的就是将其包含$*
在该脚本中。
为了供您参考,我制作了一个简单的脚本:
#!/bin/bash
echo "Number of arguments=${#*}"
echo
for arg in "$*"
do
echo "$arg "
done
一旦您做出显示的更改,您就可以传递所需的参数,它将显示传递的参数的总数和每个参数的名称:
$@:获取传递给 bash 脚本的参数列表
可以将其视为上述示例的高级形式,其中您还可以获得列中传递的参数的名称。
在这里,我创建了一个简单的脚本,它将为您提供参数的总数和传递的参数列表:
#!/bin/bash
echo "No of arguments=${#@}"
echo
for arg in "$@"
do
echo "$arg "
done
当我使用五个参数执行脚本时,它应该打印所有参数,包括它们的数量:
$n:存储 bash 脚本的前九个参数
在这种方法中,您将使用不同的变量来存储参数,因此对于某些用户来说,这可能不是最有效的方法。
但如果您决定采用这种方法,语法应如下:
#!/bin/bash
echo "Hello world"
# Use desired number of variables (till 9)
echo Argument 1 = $1
echo Argument 2 = $2
echo Argument 3 = $3
echo Argument 4 = $4
完成后,您可以执行脚本并传递参数(最多为声明的变量的数量):
$?:获取bash中最后一次执行的状态
因此,如果您想检查上次命令执行的状态,您可以$?
直接在终端中使用该变量。
这里,
0
表示成功1
表示失败
您还可以获得除0
或之外的其他东西,1
例如:
127
表示未找到命令的错误代码。
您可以$?
在终端中使用该变量,如下所示:
echo $?
总之,任何其他情况都0
表明执行失败!
$!: 获取最近活动执行的 PID
使用此方法,您可以获取当前在后台运行的最近命令执行的PID。
要使用这个变量,您必须使用$!
带有 echo 的变量:
echo $!
正如您所看到的,对我来说,它是2562
。此外,如果您愿意,可以使用 PID 在 Linux 中终止进程:
$$:获取当前shell的PID
因此,如果您想知道当前 shell 的 PID,您只需使用$$
终端中的变量:
echo $$
$-:查找当前 shell 中使用的选项集
你可以设置各种选项来调整 bash 的行为方式,并且$-
可以使用变量打印当前启用的选项:
echo $-
看起来有点令人困惑。不是吗?让我来为您解释一下。
这里,
h
(hashall):使用此选项,bash 将被指示在搜索 PATH 时跟踪它发现的每个命令位置。i
(交互式):这意味着您当前的 shell 是交互式的。m
(监视):此选项启用作业控制。B
(braceexpand):启用括号扩展。H
:(histexpand):此选项可让您通过在感叹号()后面放置数字来从历史记录中重新运行命令!number
。s
(从标准输入源命令):如果存在此选项,则从标准输入读取命令。
多种多样的变量
您可以像大多数脚本语言一样在 Bash 脚本中使用变量。
这些特殊变量使您能够更好地控制脚本。
除了这些特殊变量之外,bash 中还有环境变量。本教程将介绍如何更改它们。
希望本指南对您有所帮助。如果您有任何疑问或建议,请随时在评论中提出。