1 字符串的引用方式
1) 由单引号’ ‘包围的字符串:
2) 由双引号” “包围的字符串:
3) 不被引号包围的字符串
我们通过代码来演示一下三种形式的区别:
- str1=baidu
- str2=”shell script”
- str3=’哼哼哈嘿’
- 任何字符都会原样输出,在其中使用变量是无效的。
字符串中不能出现单引号,即使对单引号进行转义也不行。
如果其中包含了某个变量,那么该变量会被解析(得到该变量的值),而不是原样输出。
字符串中可以出现双引号,只要它被转义了就行。
不被引号包围的字符串中出现变量时也会被解析,这一点和双引号” “包围的字符串一样。
- 字符串中不能出现空格,否则空格后边的字符串会作为其他变量或者命令解析。
2 字符串获取长度
${#string_name}
3 字符串的拼接
shell字符串的拼接非常简短暴力,给他挨着就行了。
3 字符串的截取
${string: start :length} 默认从左边开始截取
其中,string 是要截取的字符串,start 是起始位置(从左边开始,从 0 开始计数),length 是要截取的长度(省略的话表示直到字符串的末尾)。
如果不指定length,则默认截取到最后。
${string: 0-start :length} 默认从右边开始截取
只比从左截取多一个0-。
1 左边开始计数时,起始数字是 0(这符合程序员思维);从右边开始计数时,起始数字是 1(这符合常人思维)。计数方向不同,起始数字也不同。
2 不管从哪边开始计数,截取方向都是从左到右。
${string#chars} 使用#号可以截取指定字符(或者子字符串)右边的所有字符 ${string%chars} 使用%号可以截取指定字符(或者子字符串)左边的所有字符。
遇到:截取了:右侧内容。
总结用法: