Shell字符串¶
字符串(String)就是一系列字符的组合. 字符串是Shell编程中最常用的数据类型之一(除了数字和字符串, 也没有其它类型了).
字符串可以使用单引号包围, 也可以使用双引号包围, 也可以不用引号, 它们之间是有区别的.
str1='hello'
str2="hello"
str3=hello
三种形式的差别:
- 单引号
''包围的字符串- 单引号里的任何字符都会作为原始字符原样输出(所见即所得), 单引号字符串中的变量是无效的;
- 单引号字符串中不能出现单引号, 即使对单引号进行转义也不行.
注意
对单引号使用转义字符后也不行, 因为单引号中的所有字符都作为原始字符, 转义字符在单引号中也是作为原始字符, 失去了转义的作用.
- 双引号
""包围的字符串- 双引号里可以有变量,变量会被解析, 得到该变量的值;
- 双引号里可以出现转义字符.
- 不被引号包围的字符串
- 不被引号包围的字符串中出现变量时也会被解析;
- 字符串中不能出现空格, 否则空格后边的字符串会作为其它变量或者命令解析.
拼接字符串¶
拼接字符串时, 把两个字符串写在一起, 中间不能有空白字符.
Example:
str1="hello""world"
echo ${str1}
str2="hello"
str3="world"
str4=${str2}${str3}
echo ${str4}
str5="hello"${str3}
echo ${str5}
字符串截取¶
| 格式 | 说明 |
${string:start:length} |
从string字符串的左边第start个字符开始, 向右截取length个字符. |
${string:start} |
从string字符串的左边第start个字符开始截取, 直到最后. |
${string:0-start:length} |
从string字符串的右边第start个字符开始, 向右截取length个字符. |
${string:0-start} |
从string字符串的右边第start个字符开始截取, 直到最后. |
${string#*chars} |
从string字符串第一次出现chars的位置开始, 截取chars右边的所有字符. |
${string##*chars} |
从string字符串最后一次出现chars的位置开始, 截取chars右边的所有字符. |
${string%*chars} |
从string字符串第一次出现chars的位置开始, 截取chars左边的所有字符. |
${string%%*chars} |
从string字符串最后一次出现chars的位置开始, 截取chars左边的所有字符. |