Shell 参数
# Shell 参数
脚本获取参数:$n
n:代表参数的位置
#!/bin/bash
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";
$ chmod +x test.sh
$ ./test.sh 1 2 3
------------------------------------
结果:
Shell 传递参数实例!
执行的文件名:./test.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
处理参数的特殊字符:
$#:传递到脚本的参数个数
#!/bin/bash echo "第一个参数为:$#"; $ ./test.sh 1 2 3 --------------------------------- 结果: 参数个数为:3
1
2
3
4
5
6
7$*: 以一个单字符串显示所有向脚本传递的参数
#!/bin/bash echo "传递的参数作为一个字符串显示:$*"; $ ./test.sh 1 2 3 ------------------------------------ 结果: 传递的参数作为一个字符串显示:1 2 3
1
2
3
4
5
6
7$$: 脚本运行的当前进程 ID 号
#!/bin/bash echo "当前脚本id:$$"; $ ./test.sh 1 2 3 ------------------------------------ 结果: 当前脚本id:11105
1
2
3
4
5
6
7$!: 后台运行的最后一个进程的 ID 号
#!/bin/bash echo "最后一个进程id:$$"; $ ./test.sh 1 2 3 ------------------------------------ 结果: 最后一个进程id:11107
1
2
3
4
5
6
7$@: 与 $* 相同,但是使用时加引号,并在引号中返回每个参数
#!/bin/bash echo "-- \$* 演示 ---" for i in "$*"; do echo $i done echo "-- \$@ 演示 ---" for i in "$@"; do echo $i done $ ./test.sh 1 2 3 ----------------------------------- 结果: -- $* 演示 --- 1 2 3 -- $@ 演示 --- 1 2 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21$-: 显示 Shell 使用的当前选项
$?: 显示最后命令的退出状态,0 表示没有错误
$ 与 $@ 区别:*
- 相同点:都是引用所有参数
- 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)