shell 字符串的操作说明
表达式 | 说明 |
${#string} | 返回字符串的长度 |
${string:position} | 在$string 中从位置$position之后开始提取字串 |
${string:position:length} | 在$string 中,从位置$postion之后开始提取$length的子串 |
${string#*substring} | 从变量$string开头删除最短匹配$substring(从左到右) |
${string##*substring} | 从变量$string开头删除最长匹配$substring(从左到右) |
${string%substring*} | 从变量$string结尾开始删除最短匹配$substring(从右道左) |
${string%%substring*} | 从变量$string结尾开始删除最长匹配$substring |
${string/substring/replace} | 使用$replace来替换第一个匹配的$substring |
${string/#substring/replace} | 如果$string前缀匹配$substring,就用$replace替换匹配$substring |
${string/%substring/replace} | 如果$string后缀匹配$substring ,就用$replace替换匹配$substring |
依次举例
(1)${#string}
[root@hadoop07 Desktop]# name=lisi
[root@hadoop07 Desktop]# echo ${#name}
4
(2)${string:position}
[root@hadoop07 Desktop]# name=zhangsan
[root@hadoop07 Desktop]# echo ${name:3}
ngsan
(3)${string:position:length}
[root@hadoop07 Desktop]# name=wangwu
[root@hadoop07 Desktop]# echo ${name:3:2}
gw
(4)${string#*substring}
[root@hadoop07 Desktop]# name=operaterok
[root@hadoop07 Desktop]# echo ${name#*o}
peraterok
(5)${string##*substring}
[root@hadoop07 Desktop]# name=operateok
[root@hadoop07 Desktop]# echo ${name##*o}
k
(6)${string%*substring}
[root@hadoop07 Desktop]# name=operateok
[root@hadoop07 Desktop]# echo ${name%o*}
operate
(7)${string%%substring*}
[root@hadoop07 Desktop]# name=koperateok
[root@hadoop07 Desktop]# echo ${name%%o*}
k
(8)${string/substring/replace}
[root@hadoop07 Desktop]# name=operateok
[root@hadoop07 Desktop]# echo ${name/a/b}
operbteok
(9)${string/#substring/replace}
[root@hadoop07 Desktop]# name=operateok
[root@hadoop07 Desktop]# echo ${name/#op/dd}
dderateok
(10)${string/%substring/replace}
[root@hadoop07 Desktop]# name=operateok
[root@hadoop07 Desktop]# echo ${name/%ok/dd}
operatedd
判断变量值的操作
运算符合 | 替换 |
${value:-word} | 如果变量名存在且非null,则返回变量的值,否则,返回word字符串,用途,如果变量未定义,则返回默认值。 范例:${value:-word}如果value未定义,则表达式的值为word |
${value:=word} | 如果变量名存在且非null,则返回变量值,否则,设置这个变量值为word,并返回其值, 用途:如果变量未定义,则设置变量未默认值,并返回默认值 ,范例:$value:=word}如果value未定义,则设置value的值为word,返回表达式的值也为word |
${value:?”not defined”} | 如果变量名存在且非null,则返回变量的值,否则显示变量名:message 并推出当前的命令或者脚本。 用途:用户捕捉由于变量未定义而导致的错误,并推出程序, 范例:${value:?”not defined”} 如果value未定义,则显示bash: value: not defined 程序并退出 |
(1)${value:-word}
[root@hadoop07 Desktop]# echo ${n:-word}
word
(2)${value:=word}
[root@hadoop07 Desktop]# echo ${n:=word}
word
[root@hadoop07 Desktop]# echo $n
word
(3)${value:?”not defined”}
[root@hadoop07 Desktop]# echo ${na:? "not defined"}
bash: na: not defined