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
linux之${}符号详解相关推荐
- LINUX特殊符号详解
# 井号 (comments) #管理员 $普通用户 脚本中 #!/bin/bash #!/bin/sh 一般出现在shell脚本第一行,意思是使用/bin/bash来执行当前shell脚本,除 ...
- Linux系统符号详解(所有用到的符号)
系统符号 基础符号 $ 取出变量中的内容 取出指定列的信息(awk) awk '{print $3}' /old.txt 取出第三列的信息 表示用户命令提示符号 表示一行的结尾 ! 表示取反或者排除 ...
- linux zip 命令详解
功能说明:压缩文件. 语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期 ...
- Linux chkconfig命令详解
Linux chkconfig命令详解 (2011-03-07 15:49:04) 转载 标签: linux shell chkconfig 杂谈 分类: 工作*Linux chkconfig: ...
- linux awk命令详解,使用system来内嵌系统命令,批量github,批量批下载视频, awk合并两列...
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- linux sort 命令详解(转 )
linux sort 命令详解 sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始! 1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比 ...
- Linux /dev目录详解和Linux系统各个目录的作用
Linux /dev目录详解和Linux系统各个目录的作用 标签: linuxtcpfunctionclassfirefoxtimer 2012-01-11 23:08 45517人阅读 评论(2) ...
- linux date 小写h,linux date 命令详解[转载]
linux date 命令详解 使用方式 : date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [- ...
- 【Linux】Linux crontab 命令详解
原文来自:http://ir.hit.edu.cn/~wsong/development/crontab.html Linux crontab 命令详解 在 Linux 中,任务可以被配置在指定的时间 ...
最新文章
- [k8s] 第十章 DashBoard
- String 方法中 replace 和 replaceAll 的区别详解(源码分析)
- 零基础自学python的建议-如何从零基础自学Python?
- Linux mount/unmount命令
- VTK:Qt之EventQtSlotConnect
- 八种ADSL接入情况中断流现象分析
- pixelbook安装linux系统,谷歌Pixelbook可以运行Fuchsia操作系统 正测试
- 小米超大杯旗舰不叫12 Ultra:或命名为MIX 5 Pro
- 使用Filter实现用户自动登录
- dvd在线租赁问题 matlab,DVD在线租赁问题.doc
- PHP原生实现,校验微信公众号||小程序服务器地址
- Spring事务传播实验剖析(一)
- Tomcat自己解压WAR包
- 【OJ每日一练】1039 - 阶乘数列和
- python秒表游戏代码_在pygam游戏中添加秒表
- 麦子学院深度学习视频SVM人脸识别课程代码修改及实现
- linux系统中ssh命令,Linux系统中SSH 命令的用法有哪些?
- 华为OJ平台题目:(练习用)挑7
- 《算法竞赛入门经典》Chap3
- 多任务环境中如何喂看门狗?