调用命令: ./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