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进程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脚本编程能力和水平,进而提高我们在工作中的效率。