- 浏览: 140736 次
- 性别:
- 来自: 成都
文章分类
最新评论
【基本介绍】
这里我们介绍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 1000【基本介绍】 通过远端修改普通用户密码,而passwd --s ... -
linux shell - broken pip error
2015-01-07 15:36 2753【基本介绍】 这里我们介绍发生broken pipe错误的原因 ... -
linux locate - find files by name
2014-12-17 17:46 610【基本介绍】 这里我们介绍locate命令,用来查找文件。 ... -
linux ssh - GSSAPIAuthentication
2014-12-10 14:58 2118【基本介绍】 最近公司搬家,发现合作伙伴的服务器的用ftp工具 ... -
linux tar - 压缩解压
2014-12-01 16:04 1021【基本介绍】 今天遇到要添加文件到tar文件里面,所以在这里介 ... -
linux netstat - status状态描述
2014-11-14 17:59 1160【基本介绍】 这里介绍netstat命令返回的结果status ... -
linux set - set variables and set positional parameters
2014-11-10 18:26 436【基本介绍】 set是shell的内置命令。可以用来设置修改变 ... -
linux nc - arbitrary TCP and UDP connections and listens
2014-10-31 17:46 809【基本介绍】 nc是可以打开任意端口的TCP/UDP连接和监听 ... -
linux 报错集 - Cannot retrieve metalink for repository: epel. Please verify its pat
2014-10-29 15:12 960【基本介绍】 运行yum报错Error: Cannot ret ... -
linux awk - awk tutorial
2014-10-21 10:47 509【基本介绍】 awk是一款强大的对文件内容进行处理的软件,可以 ... -
linux ps - processes
2014-10-20 14:17 1263【基本介绍】 ps - report a snapshot o ... -
linux lsof - list open files
2014-10-17 17:31 761【基本介绍】 lsof - list open files I ... -
linux - 网络连接状态
2014-10-13 11:00 1405【基本情况】 这里介绍 ... -
linux netstat - Print network connections, routing tables, interface statistics,
2014-10-13 10:37 1018【基本介绍】 netstat - Print network ... -
linux vmstat - Report virtual memory statistics
2014-10-10 17:39 735【基本介绍】 vmstat - Report virtual ... -
linux yum - yum warning: rpmts_HdrFromFdno
2014-10-09 15:08 607【基本介绍】 在yum安装软件的时候有时候会报warning: ... -
Linux ip subnet mask - 网段分析
2014-09-24 19:22 1372【基本介绍】 网段的分析可以帮助我们查看两个局域地址是否可以互 ... -
linux curl - curl 上传下载
2014-09-19 11:45 2125【基本介绍】 curl is a tool to tra ... -
linux mkpasswd - 密码生成器
2014-09-18 17:18 1417【基本介绍】 作为linux admin要经常创建用户,并初始 ... -
linux dd - dd测试硬盘速度
2014-09-05 18:42 853【基本介绍】 这里我们使用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 ...
Linux MySQL 8.0 二进制包安装 MySQL 是一个广泛使用的开源关系型数据库管理系统,最新版本为 8.0。在 Linux 系统中,安装 MySQL 8.0 二进制包需要按照以下步骤进行。 首先,下载 MySQL 8.0 二进制包。可以从官方...
Linux环境搭建流程文档 本文档旨在指导读者逐步搭建一个完整的Linux环境,包括JDK、MySQL、Nginx、Redis和MinIO等组件的安装和配置。 一、Linux安装部署JDK环境 1. 下载JDK:从Oracle官方网站下载JDK安装包,网址...
在本教程中,我们将详细介绍如何在 CentOS Linux release 7.9.2009 上安装 MySQL 5.7.37。首先,我们要确保系统中没有预装的 MariaDB 或其他 MySQL 版本,因为它们可能与新安装的 MySQL 冲突。 1. 卸载预装的 ...
### MySQL安装配置教程:Linux系统下的详细步骤 #### 一、背景与目标 本文旨在详细介绍如何在Linux系统下安装配置MySQL数据库。对于那些希望在移动电商服务器上部署MySQL的开发者和运维人员来说,本教程提供了从零...
在Linux CentOS 7.6操作系统环境下,安装Java、MySQL、Redis和Tomcat是构建服务器环境的基础步骤。以下是如何在这类环境中逐步安装这些组件的详细指南。 **一、JDK的安装** 1. 首先,确保已下载JDK的tar.gz安装包...
该库旨在用小字符串替换占位符。 它将递归替换对象或数组中的所有字符串。 当提供回调作为替换时,仅在使用占位符的情况下才调用它。 在node.js或浏览器中工作(可选的AMD支持)。 安装 npm npm install ...
它旨在在运行时从输入中获取字符串、模式和替换字符串,并在不执行eval情况下处理替换。 替换字符串可能包含 [编号] 匹配变量( $1或${1} ),这些变量将被插入(通过使用另一个s///而不是eval )。 用法 sub_*和...
- 处理边界问题:DES处理的是64位的数据块,如果输入字符串长度不是8的倍数,需要填充到8的倍数,并在解密后去除填充。 4. **界面设计**:在C++ Builder中,可以通过拖放控件来构建用户界面,例如,可以添加`TEdit...
在IT行业中,数据库管理系统(DBMS)是至关重要的组件,尤其是对于存储和处理大量数据的企业。这里我们主要关注两个版本的MySQL的兼容性和配置差异:TDSQL(基于MariaDB 10.1)和MySQL 5.6。通过对各种参数的比较,...
Substitution-crx插件是一款基于英语的浏览器扩展程序,它为用户提供了一种有趣的方式来阅读网络上的文本内容。这款插件的灵感来源于著名的网络漫画网站xkcd,特别是漫画编号1288。漫画作者Randall Munroe以其独特的...
在本教程中,我们将详细介绍如何在Linux环境下安装MySQL 5.7.20。MySQL是一个流行的开源关系型数据库管理系统,广泛应用于Web应用、数据分析和其他业务系统。以下是详细步骤: 1. **下载MySQL**: 首先,你需要...
$ pip install Sphinx-Substitution-Extensions 这支持Python 3.8+。 将以下内容添加到conf.py : # sphinx-prompt must be the first of these two. extensions += [ 'sphinx-prompt' , 'sphinx_substitution_...
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" ``` **注意**:`datadir`目录必须存在,如果不存在需要手动创建。 #### 四、添加环境变量 为了能够在任何位置通过命令行启动MySQL...
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysql] socket = /home/saojie/mysql-5.7.18/mysql.sock ``` 初始化MySQL服务器是安装过程中的关键步骤,可以通过运行以下命令完成: ```bash bin/mysqld ...
编码转换包括:Ascii 编码,Base64、Base 系列编码,Escape 编码,Hex 编码, Html entity 编码,莫尔斯电码,Quoted-printable(可打印字符引用编码),Shellcode 编码,Sql 编码,Tap Code(敲击码),Unicode ...