- 浏览: 134742 次
- 性别:
- 来自: 成都
文章分类
最新评论
【基本介绍】
这里我们介绍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 955【基本介绍】 通过远端修改普通用户密码,而passwd --s ... -
linux shell - broken pip error
2015-01-07 15:36 2664【基本介绍】 这里我们介绍发生broken pipe错误的原因 ... -
linux locate - find files by name
2014-12-17 17:46 561【基本介绍】 这里我们介绍locate命令,用来查找文件。 ... -
linux ssh - GSSAPIAuthentication
2014-12-10 14:58 2000【基本介绍】 最近公司搬家,发现合作伙伴的服务器的用ftp工具 ... -
linux tar - 压缩解压
2014-12-01 16:04 969【基本介绍】 今天遇到要添加文件到tar文件里面,所以在这里介 ... -
linux netstat - status状态描述
2014-11-14 17:59 1113【基本介绍】 这里介绍netstat命令返回的结果status ... -
linux set - set variables and set positional parameters
2014-11-10 18:26 406【基本介绍】 set是shell的内置命令。可以用来设置修改变 ... -
linux nc - arbitrary TCP and UDP connections and listens
2014-10-31 17:46 758【基本介绍】 nc是可以打开任意端口的TCP/UDP连接和监听 ... -
linux 报错集 - Cannot retrieve metalink for repository: epel. Please verify its pat
2014-10-29 15:12 925【基本介绍】 运行yum报错Error: Cannot ret ... -
linux awk - awk tutorial
2014-10-21 10:47 458【基本介绍】 awk是一款强大的对文件内容进行处理的软件,可以 ... -
linux ps - processes
2014-10-20 14:17 1219【基本介绍】 ps - report a snapshot o ... -
linux lsof - list open files
2014-10-17 17:31 711【基本介绍】 lsof - list open files I ... -
linux - 网络连接状态
2014-10-13 11:00 1350【基本情况】 这里介绍 ... -
linux netstat - Print network connections, routing tables, interface statistics,
2014-10-13 10:37 978【基本介绍】 netstat - Print network ... -
linux vmstat - Report virtual memory statistics
2014-10-10 17:39 692【基本介绍】 vmstat - Report virtual ... -
linux yum - yum warning: rpmts_HdrFromFdno
2014-10-09 15:08 560【基本介绍】 在yum安装软件的时候有时候会报warning: ... -
Linux ip subnet mask - 网段分析
2014-09-24 19:22 1292【基本介绍】 网段的分析可以帮助我们查看两个局域地址是否可以互 ... -
linux curl - curl 上传下载
2014-09-19 11:45 2074【基本介绍】 curl is a tool to tra ... -
linux mkpasswd - 密码生成器
2014-09-18 17:18 1380【基本介绍】 作为linux admin要经常创建用户,并初始 ... -
linux dd - dd测试硬盘速度
2014-09-05 18:42 816【基本介绍】 这里我们使用dd命令来测试硬盘的读写速度 dd ...
相关推荐
6 Validation - Substitution - Currency - Tax
shell进行字符串截取 运行 ${GIT_COMMIT:0:6}报错: /tmp/jenkins7505855461406722507.sh: 4: /tmp/jenkins7505855461406722507.sh: Bad substitution 原因:两种shell语言解释器 bash和dash 查看当前/bin/sh ...
它旨在在运行时从输入中获取字符串、模式和替换字符串,并在不执行eval情况下处理替换。 替换字符串可能包含 [编号] 匹配变量( $1或${1} ),这些变量将被插入(通过使用另一个s///而不是eval )。 用法 sub_*和...
该库旨在用小字符串替换占位符。 它将递归替换对象或数组中的所有字符串。 当提供回调作为替换时,仅在使用占位符的情况下才调用它。 在node.js或浏览器中工作(可选的AMD支持)。 安装 npm npm install ...
$ pip install Sphinx-Substitution-Extensions 这支持Python 3.8+。 将以下内容添加到conf.py : # sphinx-prompt must be the first of these two. extensions += [ 'sphinx-prompt' , 'sphinx_substitution_...
编码转换包括:Ascii 编码,Base64、Base 系列编码,Escape 编码,Hex 编码, Html entity 编码,莫尔斯电码,Quoted-printable(可打印字符引用编码),Shellcode 编码,Sql 编码,Tap Code(敲击码),Unicode ...
解压版mysql安装教程 my.ini配置文件 [mysqld] # 设置mysql的安装目录 basedir=D:/Program Files (x86)/...sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES skip-grant-tables default-storage-engine=INNODB
C风格的变量处理 10-1. 循环的一个简单例子 10-2. 每个[list]元素带两个参数的for循环 10-3. 文件信息:对包含在变量中的文件列表进行操作 10-4. 在for循环中操作文件 10-5. 在for循环中省略[list] 10-6. 使用命令...
Level 4 :: Variable substitution //变量的替换 2.下图时所用到的参数: -l 级别 -s -v -$ -oa 以追加的形式覆盖 -ow 以覆盖的形式覆盖 所用压缩包在附件 还有帮助文档 使用的例子见压缩包中的图片。
substitution-cs50
Liskov-Substitution-Principle:“程序中的对象应该可以用其子类型的实例替换,而不会改变该程序的正确性
处理带有嵌入的替换参数的输入字符串的解析,并用提供的映射中的值替换它们。 可以使用类似于方法调用的语法来格式化替换。 例如,以下内容将返回"it is a WINDY day" 。 ParameterSubstitution . evaluate ( input...
C 风格的变量处理 10-1. 循环的一个简单例子 10-2. 每个[list]元素带两个参数的for 循环 10-3. 文件信息:对包含在变量中的文件列表进行操作 10-4. 在for 循环中操作文件 10-5. 在for 循环中省略[list] 10-6. 使用...
例如: >> python decoder.py "encrypted.txt" 解码器将保留空格和返回,但不保留任何标点符号。 确保 quad_scores.json 与decoder.py 位于同一目录中quad_scores.json 是一个包含大约 2,5000,000 个英文四边形的...
厌倦了这个消息太无聊了?阅读正确的方法! 根据xkcd.com漫画在网络上替换文本:http://xkcd.com/1288/ 支持语言:English
语言:English 厌倦了新闻太无聊了吗? 以正确的方式阅读! 根据xkcd.com漫画在网络上替换文本:http://xkcd.com/1288/
Postgres日志参数替换
从 git hub 下载 .zip 文件并将所有文件解压缩到 Directory 中。 确保您的计算机中安装并配置了 JDK(Java 开发工具包) 现在创建一个文件“input.text”并在其中写入要加密的内容。 请使用任何小写字母、空格和句号...
Mac OS 上的 Face Substitution 的工作版本 请注意,由于文件大小,我无法推送整个 openFrameworks 文件夹。 因此,单独克隆此文件夹不会使此项目在您的计算机上运行。 在进行这项工作之前,您需要安装 ...
语言:English 用它们的更软的等效物替换常见的诅咒词 ====== 版本0.0.0.8更改日志: 固定“抓住”爱达荷(雪莉) ====== 您是否喜欢在经常在其提交的内容中发誓的用户毁灭有时会毁灭有益健康的网站?...