字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。
单引号
str='this is a string'
单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
双引号
[root@bogon ~]# your_name='name1' [root@bogon ~]# str="Hello, I know you are \"$your_name\"!" [root@bogon ~]# echo ${str} //输出结果 Hello, I know you are "name1"! [root@bogon ~]#
双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符
拼接字符串
[root@bogon ~]# your_name='abc' [root@bogon ~]# greeting="hello, "$your_name"" [root@bogon ~]# greeting_1="hello, ${your_name}" [root@bogon ~]# echo ${greeting} ${greeting_1} hello, abc hello, abc //输入结果 [root@bogon ~]#
获取字符串长度
[root@bogon ~]# string="abcd" [root@bogon ~]# echo ${#string} 4 //输出 4 [root@bogon ~]#
提取子字符串
以下实例从字符串第 2 个字符开始截取 4 个字符:
[root@bogon ~]# string="Hello word" [root@bogon ~]# echo ${string:1:4} ello //输出ello [root@bogon ~]#
查找子字符串
查找字符 "0" 的第一个位置:
[root@bogon ~]# string="Hello word" [root@bogon ~]# echo `expr index "$string" o` 5 //输出 5 [root@bogon ~]#