浓墨重彩之shell-03-字符串

字符串

单引号

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:

你可能感兴趣的:(浓墨重彩之shell-03-字符串)