linux shell 编程11 特殊符号总结:$0 $1 $2 $# $* $@ $! $$ $?

来源:互联网 发布:fastcam套料软件下载 编辑:程序博客网 时间:2024/06/06 06:53


$# 是传给脚本的参数个数$0 是脚本本身的名字$1 是传递给该shell脚本的第一个参数$2 是传递给该shell脚本的第二个参数$@ 是传给脚本的所有参数的列表$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个$$ 是脚本运行的当前进程ID号$! 是最后运行的后台Process的PID$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

脚本:

#!/bin/bash# args  testecho "title: $0"echo "total args: $#"echo "first args: $1"echo "second args: $2"echo "all args: $@"echo "all args: $*"echo "currnet pid:$$"echo "status: $?"

结果:

[root@localhost src]# sh java18 1 2 3
title: java18
total args: 3
first args: 1
second args: 2
all args: 1 2 3
all args: 1 2 3
currnet pid:4005
status: 0


-----------------------------------------------------------------------------------------------------

区别:"@"和 "*"

  • 相同点:都是引用所有参数

  • 不同点:只有在双引号中体现出来,假如脚本中运行时写入了三个参数(1 2 3)则 “*”等价于“123”(相当于传递了一个参数)而“@” 等价于传递了“1” “2” “3” (传递了三个参数)

3"

脚本:

#!/bin/bash# total args a=$#for((i=0;i<$a;i++))doecho "$i"doneecho "---- $ @----"for var in $@doecho "$var"doneecho "----$ *----"for va in $*doecho "$va"doneecho "---- " $ @ "----"for var1 in "$@"doecho "$var1"doneecho "---"  "----"for va1 in "$*"doecho "$va1"done


运行结果:

[root@localhost src]# sh java19 1 2 3
0
1
2
---- $ @---- 
1
2
3
----$ *----
1
2
3
----  $ @ ----
1
2
3
--- ----
1 2 3







运行结果:

[root@localhost src]# sh java19 1 2 3
0
1
2
---- $ @---- 
1
2
3
----$ *----
1
2
3
----  $ @ ----
1
2
3
--- ----
1 2 3

0 0