shell字符串操作(一)——字符串变量

一、字符串变量定义与赋值

符号意义:

  • :空测试    =>空为真
  • -  负向测试 =>不存在为真
  • + 正向测试 =>存在为真
  • = 赋值
  • ?有问题,错误
表达式含义示例

var=string

var='string'

var="string"

直接定义并赋值

string单引号包起来:原样输出

string双引号包起来:特殊符号和变量解析

var=hello,world!          =>hello,world!

var=hello,world!\n       =>错误
var='hello,world!\n'      =>hello,world!\n

var="hello,world!\n"     =>hello,world!(换行)

var=$(cmd)
var=`cmd`
定义并取得命令返回值var=$(whereis ls)
var=`whereis ls`(旧式写法)
$var
${var}
变量var的值echo $var
echo "hello,${var}"
${var-string}如果var没有被声明, 那么就以string作为其值
(var不被赋值)

echo ${var1-$var}   =>hello,world!

echo ${var1-'aaa'}   =>aaa

${var:-string}

如果var没有被声明或其值为空, 那么就以string作为其值

(var不被赋值)

var1=''

echo ${var1:-$var}   =>hello,world!

echo ${var1:-'aaa'}   =>aaa

${var:=string}如果var没有被声明或其值为空, 那么就以string赋值给var

echo ${var:='abs'}   =>abs

echo ${var}              =>abs

${var:?string}如果var没有被声明或其值为空, 那么以string作提示并终止脚本

${var2:?'不能为空'}        =>var:不能为空

${var:+string}如果var没有被声明或其值为空, 则返回空,反之则返回string

echo ${var:?'不为空'}        =>不能空

echo ${var2:+'不为空'}      =>

 

二、字符串变量属性

#字符串长度 ${#var}
var="hello,world!"
echo ${#var}         # 12

三、字符串运算

运算符含义

示例

a="hello"

b="hello,world!"

=检测两个字符串是否相等,相等返回 true。[ $a = $b ]   =>false
!=检测两个字符串是否相等,不相等返回 true。[ $a != $b ]  =>true
-z检测字符串长度是否为0,为0返回 true。[ -z $a ]       =>false
-n检测字符串长度是否为0,不为0返回 true。[ -n $a ]       =>true
str检测字符串是否为空,不为空返回 true。[ $a ]           =>true
=~检测字符串是否包含(正则试算),包含返回为true[ $b =~ $a ]  =>true
[[ $test =~ ^[0-9]+ ]] && echo 1 || echo 0

四、字符串拼接

#直接放到一起或用双引号即可,示例:
a=hello
b=world
c=$a$b       # $c = helloworld
c=$a" "$b    # $c = hello world
c="$a $b!"   # $c = hello world!

五、字符串切片

表达式含义

示例

var="hello,world!"

${var:n}取第n个字符后面的字符串echo ${var:3}        =>lo,world
${var:n:m}取第n个字符后面开始的m个字符echo ${var:3:5}     =>lo,wo
${var: -n}从末尾开始取n个字符,注意:与-之间的空格echo ${var: -3}      =>rld

${var:m:-n}

从第m个字符至从末尾的第n个字符

echo ${var:3:-3}     =>lo,wo

${var: -n:m}从末尾开始取n个字符,取m个字符echo ${var: -6:3}     =>,wo
${var: -n: -m}从倒数第n个取到倒数第m个echo ${var: -6: -1}     =>,worl
${var%.*}(非贪婪)
${var%%.*}(贪婪)

删除VALUE字符串中以分隔符“.”匹配的右边字符,保留左边字符

“*”表示通配符,用于匹配字符串将被删除的字串(下同)

${var%,*}   =>hello
${var#*.}(非贪婪)
${var##*.}(贪婪)
删除VALUE字符串中以分隔符“.”匹配的左边字符,保留右边字符${var#*.}    =>world!
${var/OLD/NEW}(非贪婪)
${var//OLD/NEW}(贪婪)
用NEW子串替换VALUE字符串中匹配的OLD子串。${var/world/Keven}  =>hello,Keven!

 

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值