白衣非少年
我没用过$@,但是可以自己写个脚本测试下。先介绍下我知道的,如下:位置变量 :$0,$1,$2,$3,$4,$5,$6,$7,$8,$9 $0显示运行的脚本,$1...显示位置参数的值预定义变量: $# 表示位置参数的数量 $* 表示所有位置参数的内容 $? 表示命令执行后返回的状态 (执行成功 返回0 执行不成功 返回非0) $$ 表示当前进程的进程号 希望打开一个进程后不再打开另一个(/proc/) $! 表示后台运行的最后一个进程号 $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 实验结果说明一切,忘采纳,谢谢。