第三章 Shell变量知识进阶与实践
3.1 Shell中特殊且重要的变量
3.1.1 Shell中的特殊位置参数变量
$0
:获取当前执行的shell脚本的文件名,如果执行脚本包含了路径,那么就输出的时候,包含脚本路径$n
:获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0时表示脚本的文件名:如果n大于9,则用大括号括起来,列如${10},接的参数以空格隔开$#
:获取当前执行的shell脚本后面接的参数的总个数$*
:获取当前shell脚本所有传参的参数,将所有的参数视为单个字符串,相当于“$1$2$3”$@
:表示将所有的参数视为不同的独立字符串,相当于“$1”“$2”“$3”“…”
3.1.2 Shell进程中的特殊状态变量
$?
:执行命令后获取返回值,0是正确,1~256则是错误 *
提示:在脚本调用,一般用exit 0,脚本返回返回值给$?
返回值的企业场景案列用法:
1)判断命令或者脚本等程序是否执行成功
2)通过在脚本调用执行“exit数字”,则脚本返回这个数字给$?
3)如果是函数里“return数字”,则函数返回这个数字给$?$$
:获取脚本执行的进程号(PID)
3.2 Bash Shell内置变量命令
1、echo:在屏幕上输出信息
2、eval:当shell程序执行到eval语句时,shell读入参数args,并将它们组成一个新的命令,然后执行
3、exec:能够在不创建新的子进程的前提下,转去执行指定的命令,当指定的命令执行完毕后,该进程(也就是最初的shell)就终止了
4、read:从标准输入读取字符串等信息,传给shell程序内部定义的变量
主要参数:
-p 用户交互
-t 时间超时,自动结束
5、shift:shift语句会按如下方式重新命名所有的位置参数变量,即$2成为$1,$3成为$2等,依次类推,在程序中每使用一次shift语句,都会使所有的位置参数依次向左移动一个位置,并使位置参数$#减1,直到减到0为止
6、exit:退出shell程序,在exit之后可以用选择地指定一个数位作为返回状态
注意:如果未给脚本指定退出状态码,整个脚本的退出状态码取决于脚本中执行的最后一条命令的状态码。
3.3 Shell变量子串知识和实践(了解)
3.3.1 Shell变量子串介绍
1.${parameter}:返回变量$parameter的内容
2.${#parameter}:返回变量$parameter内容的长度(按字符),也适用于特殊变量
3.${parameter:offset}:在变量${parameter}中,从位置offset之后开始提取子串到结尾
4.${parameter:offset:length}:在变量${parameter}中,从位置offset之后开始提取长度为length的子串
5.${parameter#word}:从变量${parameter}开头开始删除最短匹配的word子串
6.${parameter##word}:从变量${parameter}开头开始删除最长匹配的word子串
7.${parameter%word}:从变量${parameter}结尾开始删除最短匹配的word子串
8.${parameter%%word}:从变量${parameter}结尾开始删除最长匹配的word子串
9.${parameter/pattern/string}:使用string代替第一个匹配的pattern
10.${parameter//pattern/string}:使用string代替所有匹配depattern