04-Shell字符串变量

1. 字符串变量的三种方式

字符串(String)就是一系列字符的组合。字符串是 Shell 编程中最常用的数据类型之一(除了数字和字符串,也没有其他类型了)

  1. 单引号方式

  2. 双引号方式, 推荐

  3. 不用引号方式

    var = 'abc'
    var2 = "abc"
    var3 = abc

1.1 三种格式的区别

  1. 使用单引号 '' 的字符串:
    任何字符都会原样输出,在其中使用变量是无效的。

  2. 由双引号" "包围的字符串:

    其中包含了变量,那么该变量会被解析得到值,而不是原样输出

    字符串中还可以出现双引号的子字符串,但是需要转义。

  3. 不被引号包围的字符串

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

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

2. 获取字符串的长度

${#字符串变量名}

3.字符串拼接方式

  1. 无符号拼接

  2. 双引号拼接

  3. 混合拼接

4. 字符串截取方法

格式 说明
${变量名:start:length} 从 string 字符串的左边第 start 个字符开始, 向右截取 length 个字符。
${变量名:start} 从 string 字符串的左边第 start 个字符开始截取,直到最后。
${变量名:0-start:length} 从 string 字符串的右边第 start 个字符开始, 向右截取 length 个字符。
${变量名:0-start} 从 string 字符串的右边第 start 个字符开始截取,直到最后。
${变量名#*chars} 从 string 字符串第一次出现 *chars 的位置开始, 截取 *chars 右边的所有字符。
${变量名##*chars} 从 string 字符串最后一次出现 *chars 的位置开始, 截取 *chars 右边的所有字符。
${变量名%chars*} 从 string 字符串最后第一次出现 chars* 的位置开始, 截取 chars* 左边的所有字符。
${变量名%%chars*} 从 string 字符串第一次出现 chars* 的位置开始, 截取 chars* 左边的所有字符