📜  Unix / Linux-特殊变量

📅  最后修改于: 2020-10-31 14:51:57             🧑  作者: Mango


在本章中,我们将详细讨论Unix中的特殊变量。在上一章中,我们了解了在变量名称中使用某些非字母数字字符时应注意的事项。这是因为这些字符用于特殊的Unix变量的名称中。这些变量保留用于特定功能。

例如, $字符表示当前shell的进程ID号或PID-

$echo $$

上面的命令写入当前shell的PID-

29949

下表显示了一些可以在Shell脚本中使用的特殊变量-

Sr.No. Variable & Description
1

$0

The filename of the current script.

2

$n

These variables correspond to the arguments with which a script was invoked. Here n is a positive decimal number corresponding to the position of an argument (the first argument is $1, the second argument is $2, and so on).

3

$#

The number of arguments supplied to a script.

4

$*

All the arguments are double quoted. If a script receives two arguments, $* is equivalent to $1 $2.

5

$@

All the arguments are individually double quoted. If a script receives two arguments, $@ is equivalent to $1 $2.

6

$?

The exit status of the last command executed.

7

$$

The process number of the current shell. For shell scripts, this is the process ID under which they are executing.

8

$!

The process number of the last background command.

命令行参数

命令行参数$ 1,$ 2,$ 3,… $ 9是位置参数,$ 0指向实际的命令,程序,shell脚本或函数,$ 1,$ 2,$ 3,… $ 9作为参数命令。

以下脚本使用与命令行相关的各种特殊变量-

#!/bin/sh

echo "File Name: $0"
echo "First Parameter : $1"
echo "Second Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"

这是上述脚本的示例运行-

$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2

特殊参数$ *和$ @

有一些特殊的参数允许一次访问所有命令行参数。 $ *$ @都将执行相同的操作,除非用双引号“”引起来

这两个参数都指定命令行参数。但是,“ $ *”特殊参数将整个列表作为一个参数,且之间使用空格,而“ $ @”特殊参数将整个列表视为一个参数,并将其分成单独的参数。

我们可以如下所示编写shell脚本,以使用$ *或$ @特殊参数处理未知数量的命令行参数-

#!/bin/sh

for TOKEN in $*
do
   echo $TOKEN
done

这是上述脚本的示例运行-

$./test.sh Zara Ali 10 Years Old
Zara
Ali
10
Years
Old

注意-在这里do … done是一种循环,将在后续教程中进行介绍。

退出状态

$?变量表示上一个命令的退出状态。

退出状态是每个命令完成后返回的数值。通常,大多数命令如果成功则返回退出状态,如果失败则返回1。

某些命令出于特殊原因会返回其他退出状态。例如,某些命令区分错误的类型,并将根据故障的特定类型返回各种退出值。

以下是成功命令的示例-

$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
$echo $?
0
$