调用命令: ./params.sh 1 2 3
脚本内容:
#!/bin/bash
# -------------------------参数传递--------------------
echo 'Shell 传递参数:';
echo "第1个参数:${0}"; # 第一个参数是传递的当前脚本名称, 后面的才是传递过来的
echo "第2个参数:${1}";
echo "第3个参数:${2}";
echo "第4个参数:${3}";
echo "第4个参数:${4}";
echo "总计参数个数为:${#}";
echo "当前脚本运行的进程ID号:${$}";
echo "后台运行的最后一个进程ID号:${!}";
echo "传递的参数以一个字符串显示:${*}";
echo "传递的参数以数组的显示:${@}";
# $* 与 $@ 区别:
# 相同点:都是引用所有参数。
# 不同点:只有在双引号中体现出来。
# 假设在脚本运行时写了三个参数 1、2、3,,
# 则 " * " 等价于 "1 2 3"(传递了一个参数),
# 而 "@" 等价于 "1" "2" "3"(传递了三个参数)
echo '---\${*}---';
x=0;
for i in "${*}"; do
x=`expr ${x} + 1`;
echo ${i};
echo "执行次数:${x}";
done
echo '---\${@}---';
y=0;
for k in "${@}"; do
y=`expr ${y} + 1`;
echo ${k};
echo "执行次数:${y}";
done
以上脚本执行的结果为:
Shell 传递参数:
第1个参数:./params.sh
第2个参数:1
第3个参数:2
第4个参数:3
第4个参数:
总计参数个数为:3
当前脚本运行的进程ID号:10991
后台运行的最后一个进程ID号:
传递的参数以一个字符串显示:1 2 3
传递的参数以数组的显示:1 2 3
---\${*}---
1 2 3
执行次数:1
---\${@}---
1
执行次数:1
2
执行次数:2
3
执行次数:3