shell脚本中的$*,$@和$#是什么意思?

如题所述

  我没用过$@,但是可以自己写个脚本测试下。
先介绍下我知道的,如下:
位置变量 :$0,$1,$2,$3,$4,$5,$6,$7,$8,$9 $0显示运行的脚本,$1...显示位置参数的值
预定义变量:

  $# 表示位置参数的数量
  $* 表示所有位置参数的内容
  $? 表示命令执行后返回的状态 (执行成功 返回0 执行不成功 返回非0)
  $$ 表示当前进程的进程号 希望打开一个进程后不再打开另一个(/proc/<PID>)
  $! 表示后台运行的最后一个进程号
  $0 表示当前的进程名

  测试脚本如下:(位置变量只输出到$3)
  [root@XP-24-35 script]#vim a.sh
  #!/bin/bash
  echo '$0 ==> ' $0
  echo '$1 ==> ' $1
  echo '$2 ==> ' $2
  echo '$3 ==> ' $3
  echo '$$ ==> ' $$
  echo '$* ==> ' $*
  echo '$@ ==> ' $@
  echo '$# ==> ' $#
  echo '$? ==> ' $?

  执行结果1(输入小于三个位置参数a,b)
  [root@XP-24-35 script]# ./a.sh a b
  $0 ==> ./a.sh
  $1 ==> a
  $2 ==> b
  $3 ==>
  $$ ==> 4847
  $* ==> a b
  $@ ==> a b
  $# ==> 2
  $? ==> 0

  执行结果2(刚好输入三个位置参数)
  [root@XP-24-35 script]# ./a.sh a b c
  $0 ==> ./a.sh
  $1 ==> a
  $2 ==> b
  $3 ==> c
  $$ ==> 4844
  $* ==> a b c
  $@ ==> a b c
  $# ==> 3
  $? ==> 0

  执行结果3(输入大于3个位置参数)
  [root@XP-24-35 script]# ./a.sh a b c d e f
  $0 ==> ./a.sh
  $1 ==> a
  $2 ==> b
  $3 ==> c
  $$ ==> 4852
  $* ==> a b c d e f
  $@ ==> a b c d e f
  $# ==> 6
  $? ==> 0

  实验结果说明一切,忘采纳,谢谢。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网