Shell中的特殊变量:$0、$#、$*、$@、$$、$!、$?和$1~$n
The name of this script is test.sh$#$#代表传递给当前函数或脚本的参数数量。one two three$@$@代表传递给当前函数或脚本所有参数列表。
- 本文目录导读:
- 1、<a href="#id1" title="$#“>$*
- 2、$@
- 3、$$
- 4、$!
- 5、$?
- 6、~$n
- 7、^zhengzejstangdeabiaoqian$
- 8、^zhengzejstangdeabiaoqian$
$0
在Shell脚本中,特殊变量是一种预先定义好的变量,用于获取脚本运行时的相关信息。其中,$0
代表当前脚本的名称。这个变量在编写可重复使用的脚本时非常有用,因为它可以让你确定当前正在执行哪个脚本。例如,在一个名为test.sh
的文件中添加以下代码:
“`
#!/bin/bash
echo “The name of this script is $0”
当你运行这个文件时,输出应该是:
The name of this script is test.sh
$#
$#
代表传递给当前函数或脚本的参数数量。例如,在一个名为test.sh
的文件中添加以下代码:
echo “There are $# arguments passed to this script.”
当你运行这个文件并传入三个参数时(比如:
$ ./test.sh one two three
),输出应该是:
There are 3 arguments passed to this script.
$*
$*
代表传递给当前函数或脚本所有参数列表,并将它们作为单独的参数打印出来。例如,在一个名为test.sh
的文件中添加以下代码:
echo “All arguments are: $*”
All arguments are: one two three
$@
$@
代表传递给当前函数或脚本所有参数列表,并将它们作为独立的引用打印出来。例如,在一个名为test.sh
的文件中添加以下代码:
echo “All arguments are: $@”
$$
$$
代表当前Shell进程ID。例如,在一个名为test.sh
的文件中添加以下代码:
echo “The process ID of this script is $$”
![Shell中的特殊变量:$0、$#、$*、$@、$$、$!、$?和$1~$n缩略图 Shell中的特殊变量:$0、$#、$*、$@、$$、$!、$?和$1~$n](https://www.72715.net/wp-content/uploads/2023/05/50af6585dc0a28132edde22f7401f64c.png)
当你运行这个文件时,输出应该是当前Shell进程ID。
$!
$!
代表最后一次在后台执行的命令的进程ID。例如,在一个名为sleeper.sh(内容:sleep 10s)的文件中添加以下代码:
./sleeper.sh &
echo "The process ID of the last background command is $!"
当你运行这个文件时,输出应该是最后一个后台执行命令的进程ID。
$?
$?
代表上一个命令的退出状态。例如,在一个名为test.sh(内容:exit 0)的文件中添加以下代码:
./test.sh
echo "The exit status of the last command was $?"
当你运行这个文件时,输出应该是上一个命令(也就是当前脚本)退出时的状态码。
$1~$n
$1~$n
代表传递给当前函数或脚本的参数列表中第一至第N个参数。例如,在一个名为test.sh(内容:echo $1 and $2)的文件中添加以下代码:
./test.sh hello world
hello and world
总结:
Shell特殊变量在编写可重复使用、高效率、易于维护和调试性强等方面发挥着非常重要和不可替代作用。在实际开发工作中充分利用这些变量能够提高我们Shell脚本编程能力和水平,进而提高我们在工作中的效率。