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

linux之${}符号详解相关推荐

  1. LINUX特殊符号详解

    # 井号 (comments) #管理员  $普通用户 脚本中 #!/bin/bash   #!/bin/sh 一般出现在shell脚本第一行,意思是使用/bin/bash来执行当前shell脚本,除 ...

  2. Linux系统符号详解(所有用到的符号)

    系统符号 基础符号 $ 取出变量中的内容 取出指定列的信息(awk) awk '{print $3}' /old.txt 取出第三列的信息 表示用户命令提示符号 表示一行的结尾 ! 表示取反或者排除 ...

  3. linux zip 命令详解

    功能说明:压缩文件.  语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期 ...

  4. Linux chkconfig命令详解

    Linux chkconfig命令详解 (2011-03-07 15:49:04) 转载 标签: linux shell chkconfig 杂谈 分类: 工作*Linux chkconfig:    ...

  5. linux awk命令详解,使用system来内嵌系统命令,批量github,批量批下载视频, awk合并两列...

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  6. linux sort 命令详解(转 )

    linux sort 命令详解 sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始! 1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比 ...

  7. Linux /dev目录详解和Linux系统各个目录的作用

    Linux /dev目录详解和Linux系统各个目录的作用 标签: linuxtcpfunctionclassfirefoxtimer 2012-01-11 23:08 45517人阅读 评论(2) ...

  8. linux date 小写h,linux date 命令详解[转载]

    linux date 命令详解 使用方式 : date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [- ...

  9. 【Linux】Linux crontab 命令详解

    原文来自:http://ir.hit.edu.cn/~wsong/development/crontab.html Linux crontab 命令详解 在 Linux 中,任务可以被配置在指定的时间 ...

最新文章

  1. [k8s] 第十章 DashBoard
  2. String 方法中 replace 和 replaceAll 的区别详解(源码分析)
  3. 零基础自学python的建议-如何从零基础自学Python?
  4. Linux mount/unmount命令
  5. VTK:Qt之EventQtSlotConnect
  6. 八种ADSL接入情况中断流现象分析
  7. pixelbook安装linux系统,谷歌Pixelbook可以运行Fuchsia操作系统 正测试
  8. 小米超大杯旗舰不叫12 Ultra:或命名为MIX 5 Pro
  9. 使用Filter实现用户自动登录
  10. dvd在线租赁问题 matlab,DVD在线租赁问题.doc
  11. PHP原生实现,校验微信公众号||小程序服务器地址
  12. Spring事务传播实验剖析(一)
  13. Tomcat自己解压WAR包
  14. 【OJ每日一练】1039 - 阶乘数列和
  15. python秒表游戏代码_在pygam游戏中添加秒表
  16. 麦子学院深度学习视频SVM人脸识别课程代码修改及实现
  17. linux系统中ssh命令,Linux系统中SSH 命令的用法有哪些?
  18. 华为OJ平台题目:(练习用)挑7
  19. 《算法竞赛入门经典》Chap3
  20. 多任务环境中如何喂看门狗?

热门文章

  1. 2020年前端面试复习必读文章【超百篇文章赠复习导图】,移动开发工程师的发展路线
  2. Laya中图片自适应,
  3. 致敬,开源界的大佬们!
  4. C语言中的优化技巧总结
  5. 谷歌地球无法连接_为什么最有价值的商业活动是“建立连接”?
  6. JS写的数字拼图小游戏
  7. Android提权漏洞CVE-2014-7920、CVE-2014-7921
  8. 国外医疗机器人研究机构
  9. 七周学会数据分析 泽楷
  10. Android进阶之路 - RecyclverView无限自动水平滚动