字符串
单引号
str='this is a string'
单引号字符串的限制:
- 单引号的任何字符都会原样输出,单引号字符串中的变量也是无效的;
- 单引号字符串中不能出现单引号(对单引号使用转义字符也不行)
双引号
you_name='hate'
str="Hello, I know you are \"$your_name\"! \n"
双引号的优点
- 双引号里可以有变量
- 双引号里可以出现转义字符
获取字符串长度
string='abcd'
echo ${#string} #输出 4
提取子字符串
语法:
${parameter:offset}
${parameter:offset:length}
案例:
foo="This is string is long."
echo ${foo:5} # 输出 string is long
echo ${foo:5:6} # 输出 string
如果offset的值为负,默认表示它从字符串的末尾开始,而不是字符串开头。
负值前必须有一个空格,如:
foo="This string is long."
echo ${foo: -5} # 输出 long.
echo ${foo: -5:2} # 输出 lo
查找子字符串
string="hello Kittly"
echo `expr index "$string" i` # 输出8
截取字符串
var="http://www.aaa.com/123.html"
1. #号截取,删除左边字符,保留右边字符
echo ${var#*//} #输出 www.aaa.com/123.html
var是变量名
#号是运算符
*//表示从左边开始删除第一个//及左边的所有的字符。
2. ##号截取,删除左边字符,保留右边字符
echo ${var##*/} # 输出123.html
3. %号截取,删除右边字符,保留左边字符
echo ${var%/*} # 输出 http://www.aaa.com
4. %%号截取,删除右边字符,保留左边字符
echo ${var%%/*} # 输出 http: