@TOC
1.特殊位置变量
符号 | 含义 | 应用 |
---|---|---|
$0 | 脚本的名字 | 出现故障提示 使用帮助一般与$# |
$n(n数字) | 脚本的第几个参数 传参 | 桥梁(命令行 传递到 脚本中) /etc/init.d/network start |
$# | 脚本参数的个数 | 判断参数个数是否正常 |
$* | 取出所有的参数 加上双引号:相当于是1个整体 1个参数 | 循环或数组 |
$@ | 取出所有的参数 加上双引号:就是每个都是独立 | 循环或数组 |
2.特殊变量之状态
符号 | 含义 | |
---|---|---|
$? | 上一条命令 0 正常 非0 失败 | 判断各种东西执行 服务是否成功 配合判断 |
$$ | 当前运行脚本的pid | 在脚本中把pid记录到文件 方便后面进行kill |
$! | 上一个运行的脚本的pid | |
$_ | 上一个命令或脚本的最后一个参数 esc+. | _(下划线)环境变量 |
3.变量子串
- 格式${xxxxx}
- 主要作用:变量子串效率比使用相应的命令 效率更高
- 提前说明:parameter 变量名字(参数)
- 使用的时候 遇到 含义 去哪里查找
- man bash 参考Parameter Expansion
内容parameter变量 | 含义 |
---|---|
基本 | |
${parameter} | 返回变量的内容 |
${#parameter} | 返回变量$parameter的长度 |
按照范围cut截取 | |
${parameter:offset} | 在$parameter中,从位置offset之后开始提取子串 |
${parameter:offset:length} | 在$parameter中,从位置offset之后开始提取长度为length的子串 |
删除(sed) | |
${parameter#world} | 从变量$parameter的开头,删除最短匹配word的子串 |
${parameter##world} | 从变量$parameter的开头,删除最长匹配word的子串 |
${parameter%world} | 从变量$parameter的结尾,删除最短匹配word的子串 |
${parameter%%world} | 从变量$parameter的结尾,删除最长匹配word的子串 |
替换(sed) | |
${parameter/pattern/string} | 使用string来代替第一个匹配的pattern |
${parameter//pattern/string} | 使用string代替所有匹配的pattern |
3.1.统计变量中内容的字数(字符数)
3.2.统计字符数方法
3.3.面试题:I am a student,welcome to our traning study.显示这串字符串中单词字数大于6的单词
3.4.按照范围cut截取切片
- ${变量:起点} 从起点显示到结束
- ${变量:起点:长度} 从起点显示最多“长度”个字符
- 顾头不顾尾
3.5.字符删除
- ${变量#内容} 左边开始(开头)
- ${变量%内容} 右边开始(结尾)
3.6.取出文件名和文件路径【效率高】
3.7.字符替换(sed)
- 不支持正则表达式,目前只能支持通配符 * {} [0-9] [a-z] [A-Z]
| ${parameter/pattern/string} | 使用string来代替第一个匹配的pattern |
| ${parameter//pattern/string} | 使用string代替所有匹配的pattern |
4.变量扩展
- 给变量设置==默认值==
内容 | 含义 |
---|---|
${parameter:-word} | 如果parameter没有被赋值或者其值为空,那么就以word作为其值 |
${parameter:=word} | 如果parameter没有被赋值或者其值为空,那么就以word作为其值,并且将word赋值给parameter |
${parameter:?word} | 如果parameter没有被赋值或者其值为空,那么就以word作为错误输出.否则显示parameter内容 |
${parameter:+word} | 如果parameter没有被赋值或者其值为空,就什么都不做。否则用word替换变量内容 |
5.小结
[19:57:12 root@backup ~]# ll /etc/init.d/functions /etc/init.d/network
-rw-r--r--. 1 root root 18281 May 22 2020 /etc/init.d/functions
-rwxr-xr-x. 1 root root 7928 May 22 2020 /etc/init.d/network
评论