《shell编程实战》第4章shell变量进阶(上)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《shell编程实战》第4章shell变量进阶(上)相关的知识,希望对你有一定的参考价值。
1、位置变量
(1)$0 ==>取文件名
[[email protected] ~]# cat test.sh
echo $0
[[email protected] ~]# sh test.sh
test.sh
[[email protected] ~]# sh ~/test.sh
/root/test.sh
说明:执行脚本时脚本名字前面有路径则$0输出路径。前面有路径则要输出路径。也可用命令dirname和basename取值。
(2)$#和$n
$# ==>取参数的个数
说明:""里只能算一个变量,这里设置三个变量先。
[[email protected] ~]# set -- "I am" ugly oldboy
[[email protected] ~]# echo $#
3
[[email protected] ~]# echo $1
I am
[[email protected] ~]# echo $2
ugly
[[email protected] ~]# echo $3br/>oldboy
(3)$*与[email protected]的区别
[[email protected] ~]# echo $
I am ugly oldboy
[[email protected] ~]# echo [email protected]
I am ugly oldboy
[[email protected] ~]# for i in "$";do echo $i;done
I am ugly oldboy ==>可知$*就只有一个参数
[[email protected] ~]# for i in "[email protected]";do echo $i;done
I am
ugly
oldboy ==>[email protected]有四个参数
2、进程状态变量
(1)$? 0为成功,非0为失败
[[email protected] ~]# date
2018年 05月 01日 星期二 18:58:42 CST
[[email protected] ~]# echo $?
0
[[email protected] ~]# rm /
rm: 无法删除"/": 是一个目录
[[email protected] ~]# echo $?
1
在企业场景中,$?返回值的用法如下:
①判断命令、脚本或函数等程序是否执行成功
②在脚本中调用exit n,会返回这个数字给$?。
③在函数里,通过return n把这个数字以函数返回值给$?。
(2)$$ 获取进程号
验证方法①:[[email protected] ~]# cat testPid.sh
echo $$
[[email protected] ~]# sh testPid.sh &
[3] 3357
[[email protected] ~]# 3357
[3]+ Done sh testPid.sh
②(推荐):[[email protected] ~]# su - thzzc
[[email protected] ~]$ echo $$
2544
[[email protected] ~]$ kill -9 2544
[[email protected] ~]#
(3)$ 上个命令的最后一个参数(不止参数,命令也一样,应该是单词就行)
[[email protected] ~]# echo && echo $
echo
[[email protected] ~]# echo kobe && echo $
kobe
kobe
(4)$! 获取上个脚本的进程号
[[email protected] ~]# cat testPid.sh
sleep 100
[[email protected] ~]# ps -ef |grep testPid
root 6557 6311 0 15:48 pts/0 00:00:00 grep testPid
[[email protected] ~]# sh testPid.sh &
[1] 6558
[[email protected] ~]# echo $!
6558
总结:位置变量$0 $n $# $* [email protected] 5个和进程变量$$ $! $? $ 4个,都记下来会对shell编程有很大帮助。
以上是关于《shell编程实战》第4章shell变量进阶(上)的主要内容,如果未能解决你的问题,请参考以下文章
提供跟老男孩学Linux运维Shell编程实战的第第五章源代码