- 浏览: 144296 次
- 性别:
- 来自: 成都
-
文章分类
最新评论
【基本介绍】
这里我们介绍bash里面对字符串,变量等的替换等操作。
【基本用法】
shell parameter substitution
1. ${parameter}
2. ${parameter-default} ${parameter:-default}
3. ${parameter=default} ${parameter:=default}
4. ${parameter+alt_value} ${parameter:+alt_value}
5. ${parameter?err_msg} ${parameter:?err_msg}
6. ${#parameter}
7. ${var#pattern} ${var##pattern}
8. ${var%pattern} ${var%%pattern}
9. ${var:pos} ${var:pos:len}
10. ${var/pattern/replacement} ${var//pattern/replacement} ${var/#Pattern/Replacement} ${var/%Pattern/Replacement}
11. ${!varprefix*}, ${!varprefix@}
1. 变量值 - 不解释了
2. 默认值
3. 有值就取默认,没有定义就空
4. 有值无值判断
5.变量长度 - 不解释
6. 变量截取
7. 变量长度截取
8. 变量替换
9. 变量匹配
【参考引用】
http://tldp.org/LDP/abs/html/parameter-substitution.html#PARAMSUBREF
这里我们介绍bash里面对字符串,变量等的替换等操作。
【基本用法】
shell parameter substitution
1. ${parameter}
2. ${parameter-default} ${parameter:-default}
3. ${parameter=default} ${parameter:=default}
4. ${parameter+alt_value} ${parameter:+alt_value}
5. ${parameter?err_msg} ${parameter:?err_msg}
6. ${#parameter}
7. ${var#pattern} ${var##pattern}
8. ${var%pattern} ${var%%pattern}
9. ${var:pos} ${var:pos:len}
10. ${var/pattern/replacement} ${var//pattern/replacement} ${var/#Pattern/Replacement} ${var/%Pattern/Replacement}
11. ${!varprefix*}, ${!varprefix@}
1. 变量值 - 不解释了
[root@sparkVM tmp]# cat 1.sh parameter='test' echo $parameter #test echo ${parameter} #test
2. 默认值
[root@sparkVM tmp]# cat 2.sh echo ${parameter-default} #变量没有定义的时候使用默认值 echo ${parameter:-default} echo ${parameter=default} echo ${parameter:=default} parameter= echo ${parameter-default} #变量定义了,但是是空值, echo ${parameter:-default} # :- :=都继续用默认值 , 其他就是空值 echo ${parameter=default} echo ${parameter:=default} parameter='test' #变量定义了值,都使用变量的值 echo ${parameter-default} echo ${parameter:-default} echo ${parameter=default} echo ${parameter:=default} [root@sparkVM tmp]# bash 2.sh default default default default default default test test test test
3. 有值就取默认,没有定义就空
[root@sparkVM tmp]# cat 3.sh echo 1, ${parameter+default} #没有定义变量,输出空 echo 2, ${parameter:+default} parameter= echo 3, ${parameter+default} #定义了变量,但是为空 echo 4, ${parameter:+default} #:+还是使用原来值,+使用默认值 parameter='test' echo 5, ${parameter+default} #定义了变量,不为空 echo 6, ${parameter:+default} #使用默认值 [root@sparkVM tmp]# bash 3.sh 1, 2, 3, default 4, 5, default 6, default
4. 有值无值判断
[root@sparkVM tmp]# cat 4.sh parameter='test' echo 1, ${parameter?default} #变量值定义 不为空,输出变量值 echo 2, ${parameter:?default} parameter= echo 3, ${parameter?default} #变量值定义,为空, ?输出变量值,:?判断为无变量值 #echo ${parameter:?default} unset parameter #echo 4, ${parameter?default} #无变量值,报错提示:default #echo 5, ${parameter:?default} [root@sparkVM tmp]# bash 4.sh 1, test 2, test 3,
5.变量长度 - 不解释
[root@sparkVM tmp]# cat 5.sh echo ${#parameter} parameter= echo ${#parameter} parameter='test' echo ${#parameter} [root@sparkVM tmp]# bash 5.sh 0 0 4
6. 变量截取
[root@sparkVM tmp]# cat 6.sh var1=abcd12345abc6789 echo ${var1} echo ${var1#a*c} #‘#’是从左往右截取 #最短匹配 ##最长匹配 echo ${var1##a*c} echo ${var1%a*c} #‘#/%’如果最左或者最右开头没有匹配的,那么输出源 echo ${var1%%a*c} echo ${var1%b*9} # ‘%’是从右往左截取 %最短匹配 %%最长匹配 echo ${var1%%b*9} [root@sparkVM tmp]# bash 6.sh abcd12345abc6789 d12345abc6789 6789 abcd12345abc6789 abcd12345abc6789 abcd12345a a
7. 变量长度截取
[root@sparkVM tmp]# cat 7.sh var='abcdefghijklmn' echo ${var:2} #索引从2开始到结尾,初始为0 echo ${var:2:5} #索引从2开始,长度为5 [root@sparkVM tmp]# bash 7.sh cdefghijklmn cdefg
8. 变量替换
[root@sparkVM tmp]# cat 8.sh var='abcdefghijklmncdefj' echo ${var/cde/CDE} #${var/Pattern/Replacement} 替换第一次匹配 echo ${var//cde/CDE} #${var//Pattern/Replacement} 全局替换 echo ${var/#abc/ABC} #‘#’从最左边开始匹配 echo ${var/%efj/EFJ} # '%'从最右边开始匹配 echo ${var/#cde/CDE} echo ${var/%cde/CDE} #最右边没有匹配,输出源 [root@sparkVM tmp]# bash 8.sh abCDEfghijklmncdefj abCDEfghijklmnCDEfj ABCdefghijklmncdefj abcdefghijklmncdEFJ abcdefghijklmncdefj abcdefghijklmncdefj
9. 变量匹配
[root@sparkVM tmp]# cat 9.sh # This is a variation on indirect reference, but with a * or @. # Bash, version 2.04, adds this feature. xyz23=whatever xyz24= a=${!xyz*} # Expands to *names* of declared variables # ^ ^ ^ + beginning with "xyz". echo "a = $a" # a = xyz23 xyz24 a=${!xyz@} # Same as above. echo "a = $a" # a = xyz23 xyz24 echo "---" abc23=something_else b=${!abc*} echo "b = $b" # b = abc23 c=${!b} # Now, the more familiar type of indirect reference. echo $c # something_else [root@sparkVM tmp]# bash 9.sh a = xyz23 xyz24 a = xyz23 xyz24 --- b = abc23 something_else
【参考引用】
http://tldp.org/LDP/abs/html/parameter-substitution.html#PARAMSUBREF
发表评论
-
linux shell - 远端修改非root密码
2015-01-09 20:40 1041【基本介绍】 通过远端修改普通用户密码,而passwd --s ... -
linux shell - broken pip error
2015-01-07 15:36 2818【基本介绍】 这里我们介绍发生broken pipe错误的原因 ... -
linux locate - find files by name
2014-12-17 17:46 645【基本介绍】 这里我们介绍locate命令,用来查找文件。 ... -
linux ssh - GSSAPIAuthentication
2014-12-10 14:58 2163【基本介绍】 最近公司搬家,发现合作伙伴的服务器的用ftp工具 ... -
linux tar - 压缩解压
2014-12-01 16:04 1066【基本介绍】 今天遇到要添加文件到tar文件里面,所以在这里介 ... -
linux netstat - status状态描述
2014-11-14 17:59 1192【基本介绍】 这里介绍netstat命令返回的结果status ... -
linux set - set variables and set positional parameters
2014-11-10 18:26 454【基本介绍】 set是shell的内置命令。可以用来设置修改变 ... -
linux nc - arbitrary TCP and UDP connections and listens
2014-10-31 17:46 848【基本介绍】 nc是可以打开任意端口的TCP/UDP连接和监听 ... -
linux 报错集 - Cannot retrieve metalink for repository: epel. Please verify its pat
2014-10-29 15:12 995【基本介绍】 运行yum报错Error: Cannot ret ... -
linux awk - awk tutorial
2014-10-21 10:47 545【基本介绍】 awk是一款强大的对文件内容进行处理的软件,可以 ... -
linux ps - processes
2014-10-20 14:17 1290【基本介绍】 ps - report a snapshot o ... -
linux lsof - list open files
2014-10-17 17:31 791【基本介绍】 lsof - list open files I ... -
linux - 网络连接状态
2014-10-13 11:00 1444【基本情况】 这里介绍 ... -
linux netstat - Print network connections, routing tables, interface statistics,
2014-10-13 10:37 1062【基本介绍】 netstat - Print network ... -
linux vmstat - Report virtual memory statistics
2014-10-10 17:39 759【基本介绍】 vmstat - Report virtual ... -
linux yum - yum warning: rpmts_HdrFromFdno
2014-10-09 15:08 624【基本介绍】 在yum安装软件的时候有时候会报warning: ... -
Linux ip subnet mask - 网段分析
2014-09-24 19:22 1416【基本介绍】 网段的分析可以帮助我们查看两个局域地址是否可以互 ... -
linux curl - curl 上传下载
2014-09-19 11:45 2147【基本介绍】 curl is a tool to tra ... -
linux mkpasswd - 密码生成器
2014-09-18 17:18 1437【基本介绍】 作为linux admin要经常创建用户,并初始 ... -
linux dd - dd测试硬盘速度
2014-09-05 18:42 870【基本介绍】 这里我们使用dd命令来测试硬盘的读写速度 dd ...
相关推荐
Parameter Substitution and Expansion B-5. String Operations B-6. Miscellaneous Constructs C-1. Basic sed operators C-2. Examples of sed operators D-1. "Reserved" Exit Codes L-1. Batch file keywords /...
Parameter Substitution and Expansion B-5. String Operations B-6. Miscellaneous Constructs C-1. Basic sed operators C-2. Examples of sed operators D-1. "Reserved" Exit Codes L-1. Batch file keywords /...
- **Double Quotes**: `"` 用于保护字符串中的特殊字符,但允许变量替换。 - **示例**: `echo "Hello, $USER"` - **ANSI-C Quoting**: `\(...\)` 用于保护括号内的内容不被Shell解释。 - **示例**: `echo \($...
- **引用(Quoting)**:讲解如何在Shell脚本中使用引号来保护字符串不被解释。 - **扩展(Expansion)**:介绍Shell变量、命令替换等扩展功能。 - **重定向(Redirection)**:讲解如何使用输入输出重定向来控制命令的...
- **Quoting(引号)**:用于保护参数免受特殊字符的影响,确保字符串被完整地传递到命令中。 - **Shell命令**:包括简单命令、管道、命令列表和复合命令。 - **Shell函数**:允许创建可重复使用的代码块,提高脚本...
- **案例**: 假设我们需要关联某个页面中的订单编号,该编号位于字符串“Order ID:”之后和“ ”之前。 - **脚本实现**: 使用`web_reg_save_param("OrderID", "LB=Order ID:", "RB= ", LAST);`。 - **调试*...
1. **变量与赋值**:Bash中的变量可以存储各种类型的数据,包括字符串、数字和数组。使用等号(=)进行赋值,例如:`name="John"`。 2. **命令行参数**:脚本可以接收命令行参数,通过`$0`到`$9`来访问,其中`$0`...