1 字符串的引用方式

1) 由单引号’ ‘包围的字符串:
2) 由双引号” “包围的字符串:
3) 不被引号包围的字符串
我们通过代码来演示一下三种形式的区别:

  1. str1=baidu
  2. str2=”shell script”
  3. str3=’哼哼哈嘿’
  •  任何字符都会原样输出,在其中使用变量是无效的。
  •  字符串中不能出现单引号,即使对单引号进行转义也不行。

  •  如果其中包含了某个变量,那么该变量会被解析(得到该变量的值),而不是原样输出。

  •  字符串中可以出现双引号,只要它被转义了就行。

  •  不被引号包围的字符串中出现变量时也会被解析,这一点和双引号” “包围的字符串一样。

  •  字符串中不能出现空格,否则空格后边的字符串会作为其他变量或者命令解析。

2 字符串获取长度

${#string_name}

string_name代表字符串具体内容,
image.png

3 字符串的拼接

shell字符串的拼接非常简短暴力,给他挨着就行了。
6 shell中的字符串 - 图2

3 字符串的截取

${string: start :length} 默认从左边开始截取

其中,string 是要截取的字符串,start 是起始位置(从左边开始,从 0 开始计数),length 是要截取的长度(省略的话表示直到字符串的末尾)。
如果不指定length,则默认截取到最后。
6 shell中的字符串 - 图3

${string: 0-start :length} 默认从右边开始截取

只比从左截取多一个0-。
1 左边开始计数时,起始数字是 0(这符合程序员思维);从右边开始计数时,起始数字是 1(这符合常人思维)。计数方向不同,起始数字也不同。
2 不管从哪边开始计数,截取方向都是从左到右。
6 shell中的字符串 - 图4

${string#chars} 使用#号可以截取指定字符(或者子字符串)右边的所有字符 ${string%chars} 使用%号可以截取指定字符(或者子字符串)左边的所有字符。

image.png
遇到:截取了:右侧内容。
总结用法:
image.png