str="this is a string"
单引号字符串的限制:
name="yanfadi"
str="Hello, Wellcome to \"$name\"! \n"
双引号的优点:
#!/bin/bash
name="yanfadi"
y1="hello, $name!"
y2="wellcome to ${name}!"
echo $y1 $y2
脚本运行结果:
hello, yanfadi! wellcome to yanfadi!
说明:
Shell中连接字符串不需要PHP中的点号(.)和Java中的加号(+),直接挨着书写变量即可。
shell中获取字符串变量的长度:${#string}
#!/bin/bash
echo ${#string} //7
echo `expr length $string` //7
echo `expr "$string" : ".*"` //7 分号两边要有空格,这里的:跟的用法差不多
shell中截取字符串使用:${string:start:len}
#!/bin/bash
string="yanfadi"
echo ${string:4} //adi 从第4位开始截取后面所有字符串
echo ${string:3:3} //fad 从第3位开始截取后面3位
echo ${string:1:6} //anfadi 从第1位开始截取后面6位
echo ${string: -4} //fadi 左边有空格 截取后4位
echo ${string:(-4)} //fadi 左边有空格 截取后4位
echo `expr substr $string 3 3` //naf 从第3位开始截取后面3位
使用格式:
expr index $string $substring
在字符串$string中所匹配到的$substring第一次所出现的位置。
#!/bin/bash
string="wellcome to yanfadi!"
echo `expr index "$string" e` //2
说明:
expr index "$string" to
输出结果则为6,因为o字符处于第6个位置。#!/bin/bash
string="yanfadi1234"
echo `expr match $string '\([a-z]*[0-9]*\)'` //yanfadi1234
echo `expr match $string '\([a-z]*[0-9]\)'` //yanfadi1
echo `expr match $string '.*\([0-9][0-9][0-9]\)'` //234
#!/bin/bash
string="yanfadi1234"
echo ${string/23/bb} //yanfadi1bb4 替换一次
echo ${string//23/bb} //yanfadi1bb4 双斜杠替换所有匹配
echo ${string/#yan/bb} //bbfadi1234 #以什么开头来匹配
echo ${string/%34/bb} //yanfadi12bb %以什么结尾来匹配