文章目录
- $#
- $*
- $$
$#
表示命令行上参数的个数,但不包括shell脚本名本身
为脚本ex1赋予两个变量,测试$#的输出结果
[cmy@bogon test2]$ . ex1 ma.c mb.c
2 # echo $#
7 # cat $1 $2 $3 | wc -l
2 # echo $#
脚本ex1的具体内容
[root@localhost test]$ cat ex1
#ex1: shell
echo $#
cat $1 $2 $3 | wc -l
echo $#
#end
变量ma.c的具体内容
[root@localhost test]$ cat ma.c
main(){printf("chen\n");
}
变量mb.c的具体内容
[root@localhost test]$ cat mb.c
include <stdio.h>
main(){printf("meng\n");
}
$*
表示在命令行中实际给出的所有实参字符串,并不限于9个实参。
为脚本ex2赋予变量,测试$*输出结果
[root@localhost test]$ . ex2 A B C D E F G H I J K
A B C D E F G H I J K # echo $*
bash A B C D E F G H I
脚本ex2的具体内容
[root@localhost test]$ cat ex2
echo $*
echo $0 $1 $2 $3 $4 $5 $6 $7 $8 $9
$$
表示当前进程的进程号。每个进程的进程号都是唯一的(PID)。
脚本ex1的具体内容
[root@localhost test]$ cat ex1
#ex1: shell
echo $$
cat $1 $2 $3 | wc -l
echo $#
#end
脚本ex2的具体内容
[root@localhost test]$ cat ex2
echo $*
echo $0 $1 $2 $3 $4 $5 $6 $7 $8 $9
echo $$
为脚本ex1赋予变量以测试输出结果
[root@localhost test]$ . ex1 ma.c mb.c
17225 # 进程号
7
2
为脚本ex2赋予变量以测试输出结果
[root@localhost test]$ . ex2 A B C D E F G H I J K
A B C D E F G H I J K
bash A B C D E F G H I
17225 # 进程号