shell预先定义的特殊变量

文章目录


$#

表示命令行上参数的个数,但不包括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   # 进程号

猜你喜欢

转载自blog.csdn.net/Jormungand_V/article/details/109098124