Linux shell编程学习笔记8:使用字符串-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、前言


字符串是大多数编程语言中最常用最有用的数据类型这在Linux shell编程中也不例外。

本文讨论了Linux Shell编程中的字符串的三种定义方式的差别以及字符串拼接、取字符串长度、提取字符串、查找子字符串等常用字符串操作,以及反引号在echo 和 expr命令联合使用时的作用。

二、定义字符串

Linux Shell编程中的字符串可以用单引号也可以用双引号如果不包含空格也可以不用引号。

一无引号字符串

实例

user@host: ~ # var1=abc123

user@host: ~ # echo $var1

abc123

user@host: ~ #

变量var1的值abc123中不包括变格因此在赋值可以不用引号。

二单引号字符串
 

单引号里的任何字符都会原样输出变量在单引号字符串中无效即使在变量名前加上$字符变量仍不会被识别。


单引号字串中不能出现单独一个的单引号对单引号使用转义符后也不行但可成对出现作为字符串拼接使用。

实例1单引号字符串中变量无效

user@host: ~ # alpha='abcd"

user@host: ~ # echo $alpha

abcd

user@host: ~ # echo '$alpha123'

$alpha123

user@host: ~ # echo 'alpha123'

alpha123

user@host: ~ # 

实例2单引号字符串拼接

user@host : ~ # alpha='abcd'
user@host : ~ # echo $alpha 
abcd
user@host : ~ # echo '< '$alpha'>'
<abcd>
user@host : ~ # echo '<'${alpha}'>'
<abcd>
user@host : ~ # echo '<${alpha}> '
<${alpha}>
user@host : ~ # echo '<$alpha>'
<$alpha>
user@host : ~ # echo '<''>'
<>
user@host : ~ # 

三双引号字符串

在被双引号括起来的字符中"$"、"\"和反引号是拥有特殊含义的"$"代表引用变量的值而反引号代表引用命令。

所以双引号里可以有变量可以出现转义字符。

实例1双引号中的变量会被识别

user@host : ~ # alpha=“abcd”
user@host : ~ # echo $alpha 
abcd
user@host : ~ # echo "\$alpha=$alpha"
$alpha = abcd
user@host : ~ # echo "\$alpha = \"${alpha}\""
$alpha = "abcd"
user@host : ~ # 

在上面的实例中输出$、双引号等需要使用转义字符即在符号前加上\。

 

实例2双引号拼接字符串

user@host : ~ # alpha='abcd'
user@host : ~ # echo $alpha 
abcd
user@host : ~ # echo "<""$alpha "">"
<abcd>
user@host : ~ # echo "<""${alpha} "">"
<abcd>

user@host : ~ #

三、取字符串长度

  一格式

 格式${#string}

二实例

user@host : ~ # alpha='abcd'
user@host : ~ # echo ${#alpha} 
4

user@host : ~ # echo ${#alpha[0]} 

-sh: syntax error: bad substitution

user@host : ~ #

网上有资料称变量为字符串时${#string} 等价于 ${#string[0]}。但在sh中测试无效。

四、提取子字符串

一格式

格式${#string:n:m}

说明n-起始字符索引值字符串首字符索引值为0

           m-子串长度

二实例

user@host : ~ # alpha='abcd'
user@host : ~ # echo ${#alpha:0:2} 
ab

user@host : ~ # echo ${#alpha:0:8} 

abcd

user@host : ~ #

其中命令 echo ${#alpha:0:2}   是从首字符开始提取2个字符结果是ab

其中命令  echo ${#alpha:0:8}  是从首字符开始提取8个字符结果是abcd

从上例可知如指定的子串长度超过母串长度则截取至母串末。

五、查找子字符串

一格式

格式expr index string substring

说明

expr       是UNIX/LINUX下的一个手工命令行计数器用于计算表达式变量的值一般用于整数值也可用于字符串。

index      表示要进行索引操作

string      待查找的字符串

substring要查找的子字符串

二实例

user@host : ~ # alpha='abcd'
user@host : ~ # expr index $alpha bc

2

user@host : ~ # echo 'expr index ${alpha} bc'

expr index ${alpha} bc

user@host : ~ # echo `expr index ${alpha} bc`

2

user@host : ~ #

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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: shelllinux