linux之${}符号详解

22 篇文章 1 订阅

linux之${}符号详解

${ }通常用于划定变量名的边界,例如

[root@linuxforliuhj ~]# a=java
[root@linuxforliuhj ~]# aa=linux
[root@linuxforliuhj ~]# echo "$aa"
linux
[root@linuxforliuhj ~]# echo "${a}a"
javaa
[root@linuxforliuhj ~]# echo "$a"
java
[root@linuxforliuhj ~]#  

当执行echo ”$aa“的时候系统会打印变量$aa的值,当执行echo "${a}a"时打印的是${a}和字母a,所以使用中括号{ }来划定变量名的边界。如果不需要为变量名划分边界的话,$a${a}是完全相等的。

除此之外,${ }还有一个重要的功能,就是文本处理,单行文本基本上可以满足你所有需求。

【1】获取字符串长度 ${#a}

[root@linuxforliuhj ~]# a=hello
[root@linuxforliuhj ~]# echo ${a}
hello
[root@linuxforliuhj ~]# echo ${#a}
5

【2】字符串切片${a:b:c}
将字符串变量a从第b个位置开始向后截取c个字符,b是指下标,下标从0开始

[root@linuxforliuhj ~]# a='hello linux!' 
[root@linuxforliuhj ~]# echo ${a:0:5}
hello
[root@linuxforliuhj ~]# echo ${a:6}
linux!
[root@linuxforliuhj ~]# echo ${a:6:5}
linux
[root@linuxforliuhj ~]# echo ${a:(-1)}
!
[root@linuxforliuhj ~]# echo ${a:(-5)}  
inux!
# 截取从倒数第 5 个字符后的 3 个字符
[root@linuxforliuhj ~]# echo ${a:(-5):3}
inu

【3】替换字符串${a/b/c}
将变量a中的b全部替换为c,开头一个正斜杠为只匹配第一个字符串,两个正斜杠为匹配所有字符。

[root@linuxforliuhj ~]# a='hello linux linux'

#将a中的第一个linux替换为java
[root@linuxforliuhj ~]# echo "${a/linux/java}"
hello java linux

#将a中全部的linux替换为java,使用双斜杠
[root@linuxforliuhj ~]# echo "${a//linux/java}"
hello java java
#替换正则匹配为空
[root@linuxforliuhj ~]# VAR=123abc
[root@linuxforliuhj ~]# echo ${VAR//[^0-9]/}
123
[root@linuxforliuhj ~]# echo ${VAR//[0-9]/}
abc

【4】字符串截取
格式:
${parameter#word} # 删除匹配前缀
${parameter##word}
${parameter%word} # 删除匹配后缀
${parameter%%word}
# 去掉左边,#最短匹配模式,##最长匹配模式。
% 去掉右边,%最短匹配模式,%%最长匹配模式。

[root@linuxforliuhj ~]# URL="http://www.baidu.com/baike/user.html"

#以//为分隔符截取右边字符串
[root@linuxforliuhj ~]# echo ${URL#*//}
www.baidu.com/baike/user.html

#以/为分隔符截取右边字符串,##表示尽可能多的删除,保留最少内容
[root@linuxforliuhj ~]# echo ${URL##*/}
user.html
[root@linuxforliuhj ~]# echo ${URL#*/} 
/www.baidu.com/baike/user.html

#以//为分隔符截取左边字符串
[root@linuxforliuhj ~]# echo ${URL%%//*}
http:

#以/为分隔符截取左边字符串,%%表示尽可能多的删除,即保留最少内容
[root@linuxforliuhj ~]# echo ${URL%/*}
http://www.baidu.com/baike
[root@linuxforliuhj ~]# echo ${URL%%/*}
http:

【5】变量状态赋值
${VAR:-string} 如果 VAR 变量为空则返回 string
${VAR:+string} 如果 VAR 变量不为空则返回 string
${VAR:=string} 如果 VAR 变量为空则重新赋值 VAR 变量值为 string
${VAR:?string} 如果 VAR 变量为空则将 string 输出到 stderr

#如果变量为空就返回 hello world!: # VAR=
echo ${VAR:-'hello world!'}
hello world!
#如果变量不为空就返回 hello world!: # VAR="hello"
echo ${VAR:+'hello world!'}
hello world!
#如果变量为空就重新赋值:
VAR=
echo ${VAR:=hello}
hello
echo $VAR
hello
#如果变量为空就将信息输出 stderr: # VAR=
echo ${VAR:?value is null}
-bash: VAR: value is null
  • 23
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Operose-honeybee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值