当前位置:   article > 正文

linux shell基础二之命令行参数

linux shell基础二之命令行参数

    运行脚本时传递给脚本的参数称为命令行参数。命令行参数用 $n 表示,例如,$1 表示第一个参数,$2 表示第二个参数,依次类推。

请看下面的脚本:

  1. #!/bin/bash
  2. echo "File Name: $0"
  3. echo "First Parameter : $1"
  4. echo "First Parameter : $2"
  5. echo "Quoted Values: $@"
  6. echo "Quoted Values: $*"
  7. echo "Total Number of Parameters : $#"
  8. 运行结果:
  9. $./test.sh Zara Ali
  10. File Name : ./test.sh
  11. First Parameter : Zara
  12. Second Parameter : Ali
  13. Quoted Values: Zara Ali
  14. Quoted Values: Zara Ali
  15. Total Number of Parameters : 2

$* 和 $@ 的区别
$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。
但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。
下面的例子可以清楚的看到 $* 和 $@ 的区别:

  1. #!/bin/bash
  2. echo "\$*=" $*
  3. echo "\"\$*\"=" "$*"
  4. echo "\$@=" $@
  5. echo "\"\$@\"=" "$@"
  6. echo "print each param from \$*"
  7. for var in $*
  8. do
  9. echo "$var"
  10. done
  11. echo "print each param from \$@"
  12. for var in $@
  13. do
  14. echo "$var"
  15. done
  16. echo "print each param from \"\$*\""
  17. for var in "$*"
  18. do
  19. echo "$var"
  20. done
  21. echo "print each param from \"\$@\""
  22. for var in "$@"
  23. do
  24. echo "$var"
  25. done
  26. 执行 ./test.sh "a" "b" "c" "d",看到下面的结果:
  27. $*= a b c d
  28. "$*"= a b c d
  29. $@= a b c d
  30. "$@"= a b c d
  31. print each param from $*
  32. a
  33. b
  34. c
  35. d
  36. print each param from $@
  37. a
  38. b
  39. c
  40. d
  41. print each param from "$*"
  42. a b c d
  43. print each param from "$@"
  44. a
  45. b
  46. c
  47. d
  48. 退出状态

$? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。
退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1。
不过,也有一些命令返回其他值,表示不同类型的错误。
下面例子中,命令成功执行:

  1. $./test.sh Zara Ali
  2. File Name : ./test.sh
  3. First Parameter : Zara
  4. Second Parameter : Ali
  5. Quoted Values: Zara Ali
  6. Quoted Values: Zara Ali
  7. Total Number of Parameters : 2
  8. $echo $?
  9. 0
  10. $

$? 也可以表示函数的返回值











声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/216014
推荐阅读
相关标签
  

闽ICP备14008679号