Shell特殊变量

待我称王封你为后i 2022-08-20 07:22 326阅读 0赞

特殊变量列表




































变量 含义
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2
$# 传递给脚本或函数的参数个数
$* 传递给脚本或函数的所有参数
$@ 传递给脚本或函数的所有参数
$? 上个命令的退出状态,或函数的返回值
$$ 当前Shell进程ID

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

  1. #/bin/bash
  2. echo "File Name: $0"
  3. echo "First parameter: $1"
  4. echo "Secend parameter: $2"
  5. echo "Number of parameters: $#"
  6. echo "All parameters: $*"
  7. echo "All parameters: $@"

运行结果:

  1. [root@tbtravel shell]# chmod a+x command.sh
  2. [root@tbtravel shell]# ./command.sh Morris Bob
  3. File Name: ./command.sh
  4. First parameter: Morris
  5. Secend parameter: Bob
  6. Number of parameters: 2
  7. All parameters: Morris Bob
  8. All parameters: Morris Bob

$*和$@的区别
$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(“ “)包含时,都以”$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

输出结果:

  1. [root@tbtravel shell]# ./command.sh a b c d
  2. $*= a b c d
  3. "$*"= a b c d
  4. $@= a b c d
  5. "$@"= a b c d
  6. print each param from $*
  7. a
  8. b
  9. c
  10. d
  11. print each param from $@
  12. a
  13. b
  14. c
  15. d
  16. print each param from "$*"
  17. a b c d
  18. print each param from "$@"
  19. a
  20. b
  21. c
  22. d

发表评论

表情:
评论列表 (有 0 条评论,326人围观)

还没有评论,来说两句吧...

相关阅读

    相关 shell中的特殊变量

    shell中的特殊变量: $0:当前脚本的文件名 $num:num为从1开始的数字,$1是第一个参数,$2是第二个参数,$\{10\}是第十个参数 $\:传入脚本的参

    相关 Shell特殊变量$

    shell特殊变量 1)$\  所有参数列表。如"$\"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。  2)$@  所有参数列表。如"