字符串所有编程语言中最重要的一种数据类型,在 shell 中也一样重要
字符串可以用单引号引起来,也可以用双引号引起来,也可以不用引号。
单引号字符串
demo_str='这是一段字符串\n即使有换行符也不会换行'
单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
- 单引号字串中不能出现单引号,对单引号使用转义符后也不行
单引号字符串使用范例
#!/bin/bash
# filename: demo.sh
# author:DDKK.COM 弟弟快看,程序员编程资料站
# url:www.ddkk.com
name="DDKK.COM 弟弟快看,程序员编程资料站"
demo_str='这是一段字符串 ${name} 嵌入的变量名不会起作用'
echo $demo_str
脚本运行结果
$ sh demo.sh
这是一段字符串 ${name} 嵌入的变量名不会起作用
双引号
name="DDKK.COM 弟弟快看,程序员编程资料站"
demo_str="这是一段字符串 \${name} 嵌入的变量名会起作用 ${name}"
双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符
范例: 双引号字符串使用范例
#!/bin/bash
# filename: demo.sh
# author:DDKK.COM 弟弟快看,程序员编程资料站
# url:www.ddkk.com
name="DDKK.COM 弟弟快看,程序员编程资料站"
demo_str="这是一段字符串 \${name} 嵌入的变量名会起作用 ${name}"
echo $demo_str
脚本运行结果
$ sh demo.sh
这是一段字符串 ${name} 嵌入的变量名会起作用 DDKK.COM 弟弟快看,程序员编程资料站
拼接字符串
Shell 中拼接支付串只需要把两个字符串变量放到一起可以了,比如
greeting="hello, "
name="简明教程!"
demo_str=${greeting}${name}
范例: 拼接字符串
site_name="DDKK.COM 弟弟快看,程序员编程资料站(www.jiandanjiaocheng.com)"
greeting="hello, "$site_name" !"
greeting_1="hello, ${site_name} !"
demo_str=${greeting}${greeting_1}
echo $demo_str
脚本运行结果
$ sh demo.sh
hello, DDKK.COM 弟弟快看,程序员编程资料站(www.jiandanjiaocheng.com) !hello, DDKK.COM 弟弟快看,程序员编程资料站(www.jiandanjiaocheng.com) !
获取字符串长度
使用 $
{#变量名} 可以获取字符串的长度。
范例: 获取字符串长度
#!/bin/bash
# filename: demo.sh
# author:DDKK.COM 弟弟快看,程序员编程资料站
# url:www.ddkk.com
site_name="DDKK.COM 弟弟快看,程序员编程资料站(www.jiandanjiaocheng.com)"
echo ${#site_name}
运行脚本输出结果
$ sh demo.sh
30
提取子字符串
使用 $
{#变量名:开始索引:提取长度} 可以提取子字符串
注意 字符串索引从 0 开始,也就是第一个字符的索引是 0
范例: 从 demo_str 中第 2 个字符开始提取 4 个字符
#!/bin/bash
# filename: demo.sh
# author:DDKK.COM 弟弟快看,程序员编程资料站
# url:www.ddkk.com
site_name="DDKK.COM 弟弟快看,程序员编程资料站(www.jiandanjiaocheng.com)"
echo ${site_name:1:4}
运行脚本输出结果
$ sh demo.sh
单教程(
如果省略截取长度,则表示一直到结束
#!/bin/bash
# filename: demo.sh
# author:DDKK.COM 弟弟快看,程序员编程资料站
# url:www.ddkk.com
site_name="DDKK.COM 弟弟快看,程序员编程资料站(www.jiandanjiaocheng.com)"
echo ${site_name:1}
脚本运行结果
$ sh demo.sh
单教程(www.jiandanjiaocheng.com)
延伸阅读
更多Shell 字符串操作可以查看 cnblogs:linux shell 字符串操作(长度,查找,替换)详解