Linux Shell 中给脚本传递参数

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