软件工程
当前位置 :首页信息技术软件工程

linux下shell操作字符串方法全解

来源: 作者: 时间:2013-03-30 点击:

一、字符串连接

如果想要在变量后面添加一个字符,可以用一下方法:

[root@localhost sh]# value1=home
[root@localhost sh]# value2=${value1}"="
[root@localhost sh]# echo $value2
home=

把要添加的字符串变量添加{},并且需要把$放到外面。

这样输出的结果是:home=,也就是说连接成功。

又如:

[root@localhost sh]# var1=/etc/
[root@localhost sh]# var2=yum.repos.d/
[root@localhost sh]# var3=${var1}${var2}
[root@localhost sh]# echo $var3
/etc/yum.repos.d/

二、判断字符串为空

注意:字符串两边要加双引号,以及 [ 和 ] 两边要加空格,养成好习惯吧!

if [ "$str" =  "" ] 
if [ x"$str" = x ]

if [ -z "$str" ]

if [
! -n "$str" ]

三、分割字符串存至数组

shell编程中,经常需要将由特定分割符分割的字符串分割成数组,多数情况下我们首先会想到使用awk

但是实际上用shell自带的分割数组功能会更方便。假如

a="one,two,three,four"

要将$a分割开,可以这样:

OLD_IFS="$IFS"
IFS=","
arr=($a)
IFS="$OLD_IFS"
for s in ${arr[@]}
do
echo “$s"
done


上述代码会输出

one
two
three
four


arr=($a)用于将字符串$a分割到数组$arr ${arr[0]} ${arr[1]} … 分别存储分割后的数组第1 2 … 项 , ${arr[@]} 存储整个数组。变量$IFS存储着分隔符,注意只能为单个字符,

不能设置为字符串,这里我们将其设为逗号“,”。OLD_IFS用于备份默认的分隔符,使用完后将之恢复默认。

 

四、判断读取字符串值

表达式 含义
${var} 变量var的值, 与$var相同
   
${var-DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 *
${var:-DEFAULT} 如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 *
   
${var=DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 *
${var:=DEFAULT} 如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 *
   
${var+OTHER} 如果var声明了, 那么其值就是$OTHER, 否则就为null字符串
${var:+OTHER} 如果var被设置了, 那么其值就是$OTHER, 否则就为null字符串
   
${var?ERR_MSG} 如果var没被声明, 那么就打印$ERR_MSG *
${var:?ERR_MSG} 如果var没被设置, 那么就打印$ERR_MSG *
   
${!varprefix*} 匹配之前所有以varprefix开头进行声明的变量
${!varprefix@} 匹配之前所有以varprefix开头进行声明的变量

五、字符串操作(长度,读取,替换)

表达式 含义
${#string} $string的长度
   
${string:position} 在$string中, 从位置$position开始提取子串
${string:position:length} 在$string中, 从位置$position开始提取长度为$length的子串
   
${string#substring} 从变量$string的开头, 删除最短匹配$substring的子串
${string##substring} 从变量$string的开头, 删除最长匹配$substring的子串
${string%substring} 从变量$string的结尾, 删除最短匹配$substring的子串
${string%%substring} 从变量$string的结尾, 删除最长匹配$substring的子串
   
${string/substring/replacement} 使用$replacement, 来代替第一个匹配的$substring
${string//substring/replacement} 使用$replacement, 代替所有匹配的$substring
${string/#substring/replacement} 如果$string的前缀匹配$substring, 那么就用$replacement来代替匹配到的$substring
${string/%substring/replacement} 如果$string的后缀匹配$substring, 那么就用$replacement来代替匹配到的$substring

 

最新评论共有 位网友发表了评论
发表评论
用户名: 密码: 游客发言不需要密码