字符串
字符串字符串切片
-
${#var}:
返回字符串变量var 的长度 -
${var:offset}:
返回 字符串变量var 中从第offset 个字符后(不包括第offset 个字符)的字符开始,到最后的部分,offset的 的取值在0 到 到${#var}-1
之间(bash4.2 后,允许为负值) -
${var:offset:number} :
返回 字符串变量var 中从第offset个字符 后(不包括第offset 个字符)的字符开始 ,长度为number 的部分 -
${var: -length} :
取字符串的最右侧几个字符
注意:冒号后必须有一空白字符 -
${var:offset:-length} :
从最左侧跳过offset 字符,一直向右取到距离最右侧lengh 个字符之前的内容 -
${var: -length:-offset} :
先从最右侧向左取到length 个字符开始,再向右取到距离最右侧offset 个字符之间的内容
字符串处理
-
[x] 基于模式取子串
-
${var#*word} :
其中word 可以是指定的任意字符功能:自左而右,查找var 变量所存储的字符串中,第一次出现的word, 删除字符串开头至第一次出现word 字符之间的所有字符 -
${var##*word}
:同上,贪婪模式,不同的是,删除的是字符串开头至最后一次由word 指定的字符之间的所有内容示例: file="var/log/messages“ ${file#*/}: log/messages ${file##*/}: messages
-
${var%word*} :
其中word 可以是指定的任意字符;功能:自右而左,查找var 变量所存储的字符串中,第一次出现的word, 删除字符串最后一个字符向左至第一次出现word 字符之间的所有字符;例子: file="/var/log/messages" ${file%/*}: /var/log
-
${var%%word*} :
同上,只不过删除字符串最右侧的字符向左至最后一次出现word 字符之间的所有字符;示例: url=http://www.magedu.com:80 ${url##*:} 80 ${url%%:*} http
查找替换
-
${var/pattern/substr} :
查找var 所表示的字符串中,第一次被pattern 所匹配到的字符串,以substr 替换之 -
${var//pattern/substr}:
查找var 所表示的字符串中,所有能pattern 所匹配到的字符串,以substr 替换之 -
${var/#pattern/substr} :
查找var 所表示的字符串中,行首被pattern 所匹配到的字符串,以substr 替换之 -
${var/%pattern/substr} :
查找var 所表示的字符串中,行尾被pattern 所匹配到的字符串,以substr 替换之
查找并删除
-
${var/pattern} :
删除var 所表示的字符串中第一次被pattern 匹配到的字符串 -
${var//pattern} :
删除var所表示的字符换中所有被pattern所匹配到的字符串 -
${var/#pattern} :
删除var所表示的字符串中所有以pattern为行首所匹配到的字符串 -
${var/%pattern} :
删除var所表示的字符串中所有以pattern为行尾所匹配到的字符串 - [x]字符大小写转换
-
${var^^} :
把var 中的所有小写字母转换为大写 -
${var,,} :
把var 中的所有大写字母转换为小写
变量赋值
-
${var:-value} :
如果var 为空或未设置,那么返回value ;否则返回var 的值,可省略: -
${var:+value} :
如果var 不空,则返回value ,否则返回空值 -
${var:=value} :
如果var 为空或未设置,那么返回value ,并将value 赋值给var ;否则返回var 的值 -
${var:?error_info} :
如果var 为空或未设置,那么在当前终端打印error_info ;否则返回var 的值 为脚本程序使用配置文件, 实现变量赋值
(1) 定义文本文件,每行定义“name=value”
(2) 在脚本中source 此文件即可
高级变量用法- 有类型变量
Shell 变量一般是无类型的,但是bash Shell 提供了declare和typeset 两个命令用于指定变量的型,两个命令是等价的
declare [ 选项] 变量名-r 声明或显示只读变量 -i 将变量定义为整型数 -a 将变量定义为数组 -A 将变量定义为关联数组 -f 显示此脚本前定义过的所有函数名及其内容 -F 仅显示此脚本前定义过的所有函数名 -x 声明或显示环境变量和函数 -l 声明变量为小写字母 declare –l var=UPPER -u 声明变量为大写字母 declare –u var=lower