字符串的定义三种方式
1、单引号的格式:不推荐:任何字符都会原样输出,再拼接字符串中使用单引号是无效的。
2、双引号的格式,推荐:其中包含了变量,那么该变量会被解析得到值,而不是原样输出。字符串中还可以出现双引号的子字符串,但是需要转义
3、不用引号的格式:出现变量也可以被解析,但是拼接字符串不能加空格,如果有空格 空格后边内容作为命令执行
var1='abc'
var1="abc"
var1=abc
var1="abc"
echo "you are welcome,\"${var1}\"" 输出结果是:you are welcome,abc
获取字符串的长度:${#变量名称}
${#var1} 获取字符串的长度
三种字符串的区别:
总结:单引号是原样输出,不解析变量;双引号会解析变量并且可以输出子双引号,需要转义;不使用引号,可以解析变量,但是如果有空格会作为命令执行
获取字符串的长度,${#var_name}输出的是变量的字符串长度
字符串的拼接
1.无符号拼接
var3=${var1}${var2}
2.双引号拼接:推荐
var3="${var1}${var2}"
3.混合拼接
var3=${var1}‘&’${var2}
var3=${var1}“&”${var2}
echo输出命令拼接字符串是万能的,按照内容直接输出。
字符串的截取:字符串截取的常用格式
${变量名:start:length} 从 string 字符串的左边第 start 个字符开始,向右截取 length 个字符。
${变量名:start} 从 string 字符串的左边第 start 个字符开始截取,直到最后。
${变量名:0-start:length} 从 string 字符串的右边第 start 个字符开始,向右截取 length 个字符。
${变量名:0-start} 从 string 字符串的右边第 start 个字符开始截取,直到最后。
${变量名#*chars} 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。
${变量名##*chars} 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。
${变量名%chars*} 从 string 字符串最后第一次出现 chars* 的位置开始,截取 chars* 左边的所有字符。
${变量名%%chars*} 从 string 字符串第一次出现 chars* 的位置开始,截取 chars* 左边的所有字符
示例:
name="wlecome ! to mine"
[root@bogon ~]#name="welcome ! to mine"
[root@bogon ~]#echo ${name:0:2}
we
[root@bogon ~]#echo ${name:0}
welcome ! to mine
[root@bogon ~]#echo ${name:2}
lcome ! to mine
[root@bogon ~]#echo ${name:0-2:5}
ne
[root@bogon ~]#echo ${name:0-5}
mine
[root@bogon ~]#echo ${name#*m}
e ! to mine
[root@bogon ~]#echo ${name##*m}
ine
[root@bogon ~]#echo ${name%m*}
welcome ! to
[root@bogon ~]#echo ${name%%m*}
welco