Linux中Shell的特殊变量

Linux中echo $?表示显示前一个指令是否成功执行,比如:
[root@dbserver ~]# junjie
-bash: junjie: command not found
[root@dbserver ~]# echo $?
127
[root@dbserver ~]# pwd
/root
[root@dbserver ~]# echo $?
0
返回结果中,0表示成功,2表示权限拒绝
[root@dbserver ~]# su - oracle
[oracle@dbserver ~]$ ll /root
ls: cannot open directory /root: Permission denied
[oracle@dbserver ~]$ echo $?
2
1~125表示运行失败,脚本命令、系统命令错误或参数传递错误;
126表示找到该命令了,但是无法执行;
127表示未找到运行的命令;
\>128表示命令被系统强制结束

$$ 获取当前shell的进程号(PID)
$0 获取当前执行的shell脚本的文件名,包括脚本路径
$n 获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0时表示脚本的文件名,如果n大于9,用大括号括起来${10}
$# 获取当前shell命令行中参数的总个数
$*行所有参数视为单个字符串,等同于“$1$2$3”
$@ 将命令行每个参数视为单独的字符串,等同于“$1”“$2”“3”.这是将参数传递给其他程序的最佳方式,因为他会保留所有内嵌在每个参数里的任何空白。
以下为程序测试结果:
[root@dbserver ~]# set -- "I am" handsome Leo.
[root@dbserver ~]# echo $#
3
[root@dbserver ~]# for i in $*;do echo $i;done
I
am
handsome
Leo.
[root@dbserver ~]# for i in $@;do echo $i;done
I
am
handsome
Leo.
[root@dbserver ~]# for i;do echo $i;done
I am
handsome
Leo.
[root@dbserver ~]# for i in "$*";do echo $i;done
I am handsome Leo.

以上内容为作者的学习笔记,内容中的程序为亲测结果,若有侵权或不当之处还请各位朋友批评指正,共同进步.

猜你喜欢

转载自blog.51cto.com/12991611/2555871