最近,我介绍了如何使用参数的数量 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
当我用五个参数执行脚本时,它应该打印所有参数,包括它们的数量:

$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
所以如果你想查看上次命令执行的状态,你可以使用 $?
直接在您的终端中变量。
这里,
0
表示成功1
表示失败
除了 0
或者 1
例如:
127
指示未找到命令的错误代码。
您可以使用 $?
终端中的变量,如图所示:
echo $?

总之,除了 0
表示执行失败!
$!: 获取最近活跃执行的PID
使用该方法可以获取当前后台运行的最近一次命令执行的PID。
要使用此变量,您必须使用 $!
带回声的变量:
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
(source command from stdin):如果存在该选项,将从标准输入中读取命令。
各种变数
您可以在中使用变量 bash script 像大多数脚本语言一样。
这些特殊变量使您可以更好地控制脚本。
除了这些特殊变量外,还有环境变量 bash. 关于在本教程中更改它们的一些内容。
我希望您会发现本指南对您有所帮助。 如果您有任何疑问或建议,请随时在评论中提问。