第三章 Shell变量知识进阶与实践

3.1 Shell中特殊且重要的变量

3.1.1 Shell中的特殊位置参数变量

  • $0:获取当前执行的shell脚本的文件名,如果执行脚本包含了路径,那么就输出的时候,包含脚本路径
    image-20220208102804572.png
  • $n:获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0时表示脚本的文件名:如果n大于9,则用大括号括起来,列如${10},接的参数以空格隔开
    image-20220208102923806.png
  • $#:获取当前执行的shell脚本后面接的参数的总个数
    image-20220208103004144.png
  • $*:获取当前shell脚本所有传参的参数,将所有的参数视为单个字符串,相当于“$1$2$3”
    image-20220208103041537.png
  • $@:表示将所有的参数视为不同的独立字符串,相当于“$1”“$2”“$3”“…”
    image-20220208103105773.png

3.1.2 Shell进程中的特殊状态变量

  • $?:执行命令后获取返回值,0是正确,1~256则是错误 *
    提示:在脚本调用,一般用exit 0,脚本返回返回值给$?
    wps950F.tmp.jpg
    返回值的企业场景案列用法:
    1)判断命令或者脚本等程序是否执行成功
    2)通过在脚本调用执行“exit数字”,则脚本返回这个数字给$?
    3)如果是函数里“return数字”,则函数返回这个数字给$?
  • $$:获取脚本执行的进程号(PID)
    image-20220208103332328.png

3.2 Bash Shell内置变量命令

1、echo:在屏幕上输出信息

wps990E.tmp.jpg

2、eval:当shell程序执行到eval语句时,shell读入参数args,并将它们组成一个新的命令,然后执行

3、exec:能够在不创建新的子进程的前提下,转去执行指定的命令,当指定的命令执行完毕后,该进程(也就是最初的shell)就终止了

wps990F.tmp.jpg

4、read:从标准输入读取字符串等信息,传给shell程序内部定义的变量

  1. 主要参数:
  2. -p 用户交互
  3. -t 时间超时,自动结束

5、shift:shift语句会按如下方式重新命名所有的位置参数变量,即$2成为$1,$3成为$2等,依次类推,在程序中每使用一次shift语句,都会使所有的位置参数依次向左移动一个位置,并使位置参数$#减1,直到减到0为止

6、exit:退出shell程序,在exit之后可以用选择地指定一个数位作为返回状态

wps9910.tmp.jpg

注意:如果未给脚本指定退出状态码,整个脚本的退出状态码取决于脚本中执行的最后一条命令的状态码。

3.3 Shell变量子串知识和实践(了解)

3.3.1 Shell变量子串介绍

1.${parameter}:返回变量$parameter的内容

wpsCC18.tmp.jpg

2.${#parameter}:返回变量$parameter内容的长度(按字符),也适用于特殊变量

wpsCC19.tmp.jpg

3.${parameter:offset}:在变量${parameter}中,从位置offset之后开始提取子串到结尾

wpsCC1A.tmp.jpg

4.${parameter:offset:length}:在变量${parameter}中,从位置offset之后开始提取长度为length的子串

wpsCC2B.tmp.jpg

5.${parameter#word}:从变量${parameter}开头开始删除最短匹配的word子串

wpsCC2C.tmp.jpg

6.${parameter##word}:从变量${parameter}开头开始删除最长匹配的word子串

wpsCC2D.tmp.jpg

7.${parameter%word}:从变量${parameter}结尾开始删除最短匹配的word子串

wpsCC2E.tmp.jpg

8.${parameter%%word}:从变量${parameter}结尾开始删除最长匹配的word子串

wpsCC3F.tmp.jpg

9.${parameter/pattern/string}:使用string代替第一个匹配的pattern

wpsCC40.tmp.jpg

10.${parameter//pattern/string}:使用string代替所有匹配depattern

wpsCC41.tmp.jpg

3.4 Shell特殊扩展变量的知识与实践(了解)

image-20220208103942506.png