公司企业网站的选择,五矿瑞和上海建设有限公司网站,沈阳网站建设q479185700棒,哈尔滨快速建站专业定制一、前言 字符串是大多数编程语言中最常用最有用的数据类型#xff0c;这在Linux shell编程中也不例外。
本文讨论了Linux Shell编程中的字符串的三种定义方式的差别#xff0c;以及字符串拼接、取字符串长度、提取字符串、查找子字符串等常用字符串操作,#xff0c;以及反…一、前言 字符串是大多数编程语言中最常用最有用的数据类型这在Linux shell编程中也不例外。
本文讨论了Linux Shell编程中的字符串的三种定义方式的差别以及字符串拼接、取字符串长度、提取字符串、查找子字符串等常用字符串操作,以及反引号在echo 和 expr命令联合使用时的作用。
二、定义字符串
Linux Shell编程中的字符串可以用单引号也可以用双引号如果不包含空格也可以不用引号。
一无引号字符串
实例 userhost: ~ # var1abc123 userhost: ~ # echo $var1 abc123 userhost: ~ # 变量var1的值abc123中不包括变格因此在赋值可以不用引号。
二单引号字符串
单引号里的任何字符都会原样输出变量在单引号字符串中无效即使在变量名前加上$字符变量仍不会被识别。 单引号字串中不能出现单独一个的单引号对单引号使用转义符后也不行但可成对出现作为字符串拼接使用。
实例1单引号字符串中变量无效 userhost: ~ # alphaabcd userhost: ~ # echo $alpha abcd userhost: ~ # echo $alpha123 $alpha123 userhost: ~ # echo alpha123 alpha123 userhost: ~ # 实例2单引号字符串拼接 userhost : ~ # alphaabcd userhost : ~ # echo $alpha abcd userhost : ~ # echo $alpha abcd userhost : ~ # echo ${alpha} abcd userhost : ~ # echo ${alpha} ${alpha} userhost : ~ # echo $alpha $alpha userhost : ~ # echo userhost : ~ # 三双引号字符串
在被双引号括起来的字符中$、\和反引号是拥有特殊含义的$代表引用变量的值而反引号代表引用命令。
所以双引号里可以有变量可以出现转义字符。
实例1双引号中的变量会被识别 userhost : ~ # alpha“abcd” userhost : ~ # echo $alpha abcd userhost : ~ # echo \$alpha$alpha $alpha abcd userhost : ~ # echo \$alpha \${alpha}\ $alpha abcd userhost : ~ # 在上面的实例中输出$、双引号等需要使用转义字符即在符号前加上\。 实例2双引号拼接字符串 userhost : ~ # alphaabcd userhost : ~ # echo $alpha abcd userhost : ~ # echo $alpha abcd userhost : ~ # echo ${alpha} abcd userhost : ~ # 三、取字符串长度 一格式 格式${#string} 二实例 userhost : ~ # alphaabcd userhost : ~ # echo ${#alpha} 4 userhost : ~ # echo ${#alpha[0]} -sh: syntax error: bad substitution userhost : ~ # 网上有资料称变量为字符串时${#string} 等价于 ${#string[0]}。但在sh中测试无效。
四、提取子字符串
一格式 格式${#string:n:m} 说明n-起始字符索引值字符串首字符索引值为0 m-子串长度 二实例 userhost : ~ # alphaabcd userhost : ~ # echo ${#alpha:0:2} ab userhost : ~ # echo ${#alpha:0:8} abcd userhost : ~ # 其中命令 echo ${#alpha:0:2} 是从首字符开始提取2个字符结果是ab
其中命令 echo ${#alpha:0:8} 是从首字符开始提取8个字符结果是abcd
从上例可知如指定的子串长度超过母串长度则截取至母串末。
五、查找子字符串
一格式 格式expr index string substring 说明 expr 是UNIX/LINUX下的一个手工命令行计数器用于计算表达式变量的值一般用于整数值也可用于字符串。 index 表示要进行索引操作 string 待查找的字符串 substring要查找的子字符串 二实例 userhost : ~ # alphaabcd userhost : ~ # expr index $alpha bc 2 userhost : ~ # echo expr index ${alpha} bc expr index ${alpha} bc userhost : ~ # echo expr index ${alpha} bc 2 userhost : ~ # d
在上例中我们可以在命令行中使用命令 expr index $alpha bc 查找子字符串 ab 在字符串变量alpha值中的位置
如果要与echo命令配合使用的话不能使用单引号而需要使用反引号。
在命令 echo expr index ${alpha} bc 中 使用的是单引号expr index ${alpha} bc 被当成字符串直接输出所以命令执行结果是expr index ${alpha} bc
在命令 echo expr index ${alpha} bc 中使用的是反引号expr index ${alpha} bc作为命令执行所以命令执行结果是2