栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

linux之${}符号详解

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

linux之${}符号详解

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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/618368.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号