Bash Shell 脚本中的特殊变量

最近,我介绍了如何使用参数的数量 bash 这涉及使用 $# 变量,它是的特殊变量之一 bash.

在本指南中,我将带您了解所有这些特别的 bash 变量。 我将在本教程的后面部分分享脚本示例。

中的特殊变量 bash

这是快速查看您获得的特殊变量 bash 壳:

特殊变量描述
$0获取当前脚本的名称。
$#获取执行时传递的参数数量 bash 脚本。
$*为您提供一个包含每个命令行参数的字符串。
[email protected]它将每个命令行参数的列表存储为一个数组。
$1-$9存储前 9 个参数。
$?获取最后一个命令或最近执行的进程的状态。
$!显示最后一个后台命令的进程 ID。
$$获取当前 shell 的进程 ID。
$-它将打印当前 shell 中的当前选项集。

现在,让我们一一详细了解它们。

$0:获取脚本的名称

要获取当前脚本的名称,您必须使用 #0 带有回显的脚本中的变量。

为了 example,在这里,我创建了一个简单的 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

进行显示的更改后,您可以传递所需的参数,它将显示传递的参数总数和每个参数的名称:

[email protected]:获取传递给的参数列表 bash 脚本

将此视为上述的高级形式 example 您还可以在其中获得列中传递的参数的名称。

在这里,我创建了一个简单的脚本,它将为您提供参数总数和传递的参数列表:

#!/bin/bash
echo "No of arguments=${#@}"

echo

for arg in "[email protected]"
do
        echo "$arg "
done

当我用五个参数执行脚本时,它应该打印所有参数,包括它们的数量:

获取传递给的参数的数量 bash 脚本

$n:存储前九个参数 bash 脚本

⚠️使用此方法,您不能存储超过 9 个参数。

在此方法中,您将使用不同的变量来存储参数,因此对于某些用户而言,这可能不是最有效的方法。

但是如果你决定使用这种方法,语法应该是这样的:

#!/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 脚本

$?: 获取上次执行的状态 bash

所以如果你想查看上次命令执行的状态,你可以使用 $? 直接在您的终端中变量。

这里,

  • 0 表示成功
  • 1 表示失败

除了 0 或者 1 例如:

127 指示未找到命令的错误代码。

您可以使用 $? 终端中的变量,如图所示:

echo $?
获取linux中最后一次执行的退出状态

总之,除了 0 表示执行失败!

$!: 获取最近活跃执行的PID

使用该方法可以获取当前后台运行的最近一次命令执行的PID。

要使用此变量,您必须使用 $! 带回声的变量:

echo $!
获取后台最近活动的 PID

正如你所看到的,对我来说,它是 2562. 另外,如果你愿意,你可以使用 PID 来终止 Linux 中的进程:

$$:获取当前shell的PID

所以如果你想知道当前 shell 的 PID,你所要做的就是使用 $$ 终端中的变量:

echo $$
获取当前shell的PID

$-: 查找当前 shell 中使用的选项集

您可以设置各种选项来调整 bash 应该表现并使用 $- 变量,您可以打印当前启用的选项:

echo $-
在中找到活动选项 bash 使用 $- 变量

看起来很混乱。 不是吗? 让我为你解读。

这里,

  • h (hashall):使用这个选项, bash 指示在搜索您的 PATH 时跟踪它发现的每个命令位置。
  • i (交互式):这意味着您当前的 shell 是交互式的。
  • m (监视器):此选项启用作业控制。
  • B (braceexpand):启用大括号扩展。
  • H: (histexpand):此选项使您能够通过在感叹号 (!number).
  • s (source command from stdin):如果存在该选项,将从标准输入中读取命令。

各种变数

您可以在中使用变量 bash script 像大多数脚本语言一样。

这些特殊变量使您可以更好地控制脚本。

除了这些特殊变量外,还有环境变量 bash. 关于在本教程中更改它们的一些内容。

我希望您会发现本指南对您有所帮助。 如果您有任何疑问或建议,请随时在评论中提问。