Linux中的每一个进程都有一个唯一的ID,称为PID,使用变量就可以获取当前进程的PID。
比如:
ccoy@ccoy-PC:~/demo$ echo "Process ID: "
Process ID: 7518
输出当前进程PID是7518。
变量是Shell中的特殊变量,接下来介绍Shell的几个特殊变量,它们分别是:$#、$*、$@、$?、
。
变量 | 含义 |
---|---|
$0 | 当前脚本的文件名。 |
$n(n≥1) | 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1,第二个参数是 $2。 |
$# | 传递给脚本或函数的参数个数。 |
$* | 传递给脚本或函数的所有参数。 |
$@ | 传递给脚本或函数的所有参数。当被双引号" " 包含时,$@ 与 $* 稍有不同。 |
$? | 上个命令的退出状态,或函数的返回值。 |
$$ | 当前 Shell 进程 ID。对于 Shell 脚本,就是这些脚本所在的进程 ID。 |
ccoy@ccoy-PC:~/demo$ echo "File Name: $0"
File Name: /bin/bash
ccoy@ccoy-PC:~/demo$ echo "First Parameter : $1"
First Parameter :
ccoy@ccoy-PC:~/demo$ echo "Second Parameter : $2"
Second Parameter :
ccoy@ccoy-PC:~/demo$ echo "All parameters 1: $@"
All parameters 1:
ccoy@ccoy-PC:~/demo$ echo "All parameters 2: $*"
All parameters 2:
ccoy@ccoy-PC:~/demo$ echo "Total: $#"
Total: 0
ccoy@ccoy-PC:~/demo$ echo "上个命令退出状态: $?"
上个命令退出状态: 0
将以上命令内容放入test.sh,保存并执行
#!/bin/bash
echo "Process ID: $$"
echo "File Name: $0"
echo "First Parameter : $1"
echo "Second Parameter : $2"
echo "All parameters 1: $@"
echo "All parameters 2: $*"
echo "Total: $#"
echo "上个命令退出状态: $?"
运行 test.sh,并附带参数:
ccoy@ccoy-PC:~/demo$ ./test.sh Shell Linux
Process ID: 9991
File Name: ./test.sh
First Parameter : Shell
Second Parameter : Linux
All parameters 1: Shell Linux
All parameters 2: Shell Linux
Total: 2
上个命令退出状态: 0
利用函数传递参数
编写下面的代码,并保存为 test.sh:
#!/bin/bash
#定义函数
function func(){
echo "Language: $1"
echo "URL: $2"
echo "First Parameter : $1"
echo "Second Parameter : $2"
echo "All parameters 1: $@"
echo "All parameters 2: $*"
echo "Total: $#"
}
#调用函数
func Java http://c.biancheng.net/java/
ccoy@ccoy-PC:~/demo$ ./test.sh
运行结果为:
Language: Java
URL: http://c.biancheng.net/java/
First Parameter : Java
Second Parameter : http://c.biancheng.net/java/
All parameters 1: Java http://c.biancheng.net/java/
All parameters 2: Java http://c.biancheng.net/java/
Total: 2