字符串
字符串引用
Shell中引用字符串可以使用双引号,也可以使用单引号,也可以不使用引号。
双引号
最常使用的引用形式就是加双引号
1 | str="test" |
使用双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符
单引号
1 | str='this is a string' |
使用单引号有所限制:
- 在echo命令下,单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
- 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
无引号
1 | str=this is a string |
不使用引号只适合引用单个单词变量时使用,空格之后的字符无法识别。
字符串操作
拼接字符串
1 | your_name="Jerry" |
输出结果:
1 | hello, Jerry ! |
证明单引号中直接引用变量是无效的。
获取字符串长度
1 | string="abcdefg" |
提取子字符串
1 | string="I am learning Shell!" |
空格不做字符统计,使用${string:1:5}时包头不包尾。
反引号使用
如果需要调用命令的输出,或把命令的输出赋予变量,则命令必须使用反引号包含,这条命令才会执行,反引号的作用和$(命令)是一样的,但是反引号非常容易和单引号搞混,所以推荐大家使用 $(命令) 的方式引用命令的输出。
1 | echo `date` |
查找子字符串
1 | string="I am learning Shell!" |
查找字符 S 的位置(哪个字母先出现就计算哪个)
数组
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
数组元素的下标由 0 开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。
定义数组
用括号来表示数组,数组元素用空格分割开,等号左边不能加空格
1 | array_name=(value0 value1 value2 value3 ...) |
也可以使用空行:
1 | array_name=( |
还可以单独定义数组的各个分量:
1 | array_name[0]=value0 |
可以不使用连续的下标,而且下标的范围没有限制。
读取数组
1 | ${array_name[index]} |
通过引用数组的方式进行读取
使用 @ 获取 * 符号可以获取数组中的所有元素:
1 | array=(1 2 3 4) |
获取数组长度
获取数组长度的方法与获取字符串长度的方法相同:
1 | array=(12 2 3 4) |