3. Shell 传递参数

$* 与 $@ 区别


  • 相同点:都是引用所有参数。
  • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 “ * “ 等价于 “1 2 3”(传递了1个参数),而 “@” 等价于 “1” “2” “3”(传递了3个参数)。
  1. # !/bin/bash
  2. # author:Asa
  3. echo "-- \$* 演示 ---"
  4. for i in "$*"; do
  5. echo $i
  6. done
  7. echo "-- \$@ 演示 ---"
  8. for i in "$@"; do
  9. echo $i
  10. done

执行脚本,输出结果如下所示:

  1. $ chmod +x test.sh
  2. $ ./test.sh 1 2 3
  3. -- $* 演示 ---
  4. 1 2 3
  5. -- $@ 演示 ---
  6. 1
  7. 2
  8. 3