shell的特殊重要内置变量

来源:互联网 发布:软件服务外包 编辑:程序博客网 时间:2024/05/22 12:09

《1》位置变量

$0 获取当前执行的shell脚本的文件名,如果执行脚本带路径,那么就包括脚本路径。

$n 获取当前执行shell的命令行的第n个参数,当n=0时表示脚本的文件名,如果n>9,用{}将其括起来,参数以空格隔开。

$# 获取当前执行的shell脚本后面接的参数的总个数。

[root@localhost SHELL]# vim test.sh [root@localhost SHELL]# sh test.sh "how are you" hellohow are you hello 2 test.sh[root@localhost SHELL]# cat test.sh echo $1 $2 $# $0[root@localhost SHELL]# ///////////////////加引号与否[root@localhost SHELL]# vim test.sh [root@localhost SHELL]# sh test.sh how are youhow are[root@localhost SHELL]# sh test.sh "how are you" hellohow are you hello[root@localhost SHELL]# cat test.sh echo $1 $2

$*
$@

$@ 与 $* 的区别:
$* 将命令行的所有参数视为一个单独的字符串,等同于”$1$2$3”,”$*”

$@ 将命令行的每个参数视为单独的字符串,等同于”$1”, “$2”, “$3”.

dirname 与 basename

dirname 获取文件的路径名
basename 获取文件的名称

[root@localhost SHELL]# dirname /root/Desktop/SHELL/test.sh /root/Desktop/SHELL[root@localhost SHELL]# basename /root/Desktop/SHELL/test.sh test.sh[root@localhost SHELL]# 

$0的使用验证
这里写图片描述

《2》进程状态变量

$? 获取执行上一个指令的返回值(0表示成功,非0表示失败)

[root@localhost SHELL]# echo $?0[root@localhost SHELL]# sh test1.sh ni hao, ming tian[root@localhost SHELL]# echo $?0[root@localhost SHELL]# cat test1.sh echo 'ni hao, ming tian'[root@localhost SHELL]# 

$? 的返回值的意义:

0 执行成功
2 权限不够
1~125 执行失败
126 找到该命令了,但是无法执行
127 未找到要运行的命令
大于128 命令被系统强制中断

提示: 在脚本中一般用 exit 数字,在执行脚本后,返回返回值给$?;;;; 在函数里用return 数字 返回返回值给$?

$! 获取执行上一个指令的PID
$$ 获取当前shell的进程号(PID)

[root@localhost SHELL]# sh test1.sh ni hao, ming tian[root@localhost SHELL]# echo $$5964[root@localhost SHELL]# cat test1.sh echo 'ni hao, ming tian'[root@localhost SHELL]# /////////////////[root@localhost SHELL]# vim test.sh [root@localhost SHELL]# sh test.sh &[2] 7733[root@localhost SHELL]# cat /tmp/a.pid 7733[root@localhost SHELL]# cat test.sh echo $$ >/tmp/a.pidsleep 200[root@localhost SHELL]# 

$_ 获取在此之前执行的命令或脚本的最后一个参数

[root@localhost SHELL]# ls ./test1.sh  test.sh  UNIX.shell范例精解(第4版).pdf[root@localhost SHELL]# echo $_./[root@localhost SHELL]# //////////////////[root@localhost SHELL]# cat test.sh echo $1 $2 $# $0[root@localhost SHELL]# echo $_test.sh[root@localhost SHELL]# sh test.sh hello worldhello world 2 test.sh[root@localhost SHELL]# echo $_world[root@localhost SHELL]# 
1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 骨头卡在喉咙里怎么办 卡刺喉咙怎么办小窍门 中百购物卡过期怎么办 得仕卡过期了怎么办 超市购物卡丢了怎么办 中石化油卡丢失怎么办 etc同车换车牌了怎么办 石油加油卡丢了怎么办 石化加油卡丢了怎么办 怎么办中石化的加油卡 中石油油卡丢失怎么办 公司加油卡丢了怎么办 yy频道被回收了怎么办 油卡里的圈存怎么办 农商银行圈存怎么办 社保卡号忘记了怎么办 陕西壳牌加油卡怎么办 联通用超了流量怎么办 联通3g上不了网怎么办 车玻璃水冻住了怎么办 车里玻璃水冻了怎么办 做现货亏了60万怎么办 宿舍太吵晚上睡不着觉怎么办 脚扎了钉子肿了怎么办 龙血树叶子下垂怎么办 龙血树叶子卷曲怎么办 3岁宝宝长期便秘怎么办 4岁小儿便秘严重怎么办 3岁宝宝便秘严重怎么办 3岁宝宝一直便秘怎么办 11个月宝宝便秘怎么办 2个月的宝宝便秘怎么办 宝宝便秘拉不下来怎么办 5一6岁儿童便秘怎么办 3个月宝宝便秘怎么办 8个月宝宝便秘怎么办 孕5个月咳嗽厉害怎么办 孕8个月咳嗽厉害怎么办 拆石膏后关节僵硬怎么办 宝宝的小腿不直怎么办 鸡咳嗽有痰呼噜怎么办