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