一、参数传递
执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式:$n
。
n 代表一个数字,1为执行脚本的第一个参数,2为执行脚本的第二个参数,以此类推......
实例:
向脚本传递三个参数,其中 $0
为文件名(包含文件路径)。
Shell 脚本:
#!/bin/bash
echo "Shell传递参数实例:"
echo "执行的文件名:$0"
echo "第一个参数:$1"
echo "$2"
echo "$3"
执行脚本:
sh test.sh 1 2, 3
输出结果:
Shell传递参数实例:
执行文件名:test.sh
第一个参数:1
2,
3
二、处理参数的特殊字符
$#:传递脚本的参数个数
$*:传递脚本的所有参数
$$:传递当前进程ID号
$!:传递后台运行的最后一个进程ID号
$@:与$*相同,传递脚本的所有参数
Shell 脚本:
#!/bin/bash
echo "参数个数:$#"
echo "所有参数:$*"
echo "进程ID号:$$"
echo "后台最后一个进程ID号:$!"
echo "所有参数:$@"
执行脚本:
sh test.sh 1, 2, 3
运行结果:
参数个数:3
所有参数:1, 2, 3
进程ID号:2902
后台最后一个进程ID号:
所有参数:1, 2, 3
$* 与 $@区别
- 相同:传递所有参数
- 不同:只有在双引号体现出来。假设脚本运行时写了3个参数 1、2、3,则 “*” 等价于 “1,2,3,”(传递了一个参数),而 “@” 等价于 “1”,“2”,“3” (传递了三个参数)。
Shell 脚本:
#!/bin/bash
echo "--$*--"
for i in "$*"; do
echo $i
done
echo "--$@--"
for i in "$@"; do
echo $i
done
执行脚本:
sh test.sh 1, 2, 3
运行结果:
--$*--
1, 2, 3
--$@--
1,
2,
3