`
音频数据
  • 浏览: 35645 次
文章分类
社区版块
存档分类
最新评论

linux变量内容的删除与替代${}

 
阅读更多
bash 对${}定义了不少用法。对变量的操作及判断是一个十分有用的工具,应好好学习一下,以下是说明的表列

变量的删除

${parameter#word}

${parameter##word}

${parameter%word}

${parameter%%word}

变量的提取

${parameter:offset}

${parameter:offset:length}

变量的替换

${parameter/pattern/string}

${parameter//pattern/string}

变量的删除、提取、替换

[root@awake ~]# file=/dir1/dir2/dir3/my.file.txt  //定义一个变量

[root@awake ~]# echo $file                        //显示定义的变量

/dir1/dir2/dir3/my.file.txt

[root@awake ~]# echo ${file#*/}                   //删除/和/左边的字符串,最短匹配的

dir1/dir2/dir3/my.file.txt

[root@awake ~]# echo ${file##*/}                  //删除/和/左边的字符串,最长匹配的

my.file.txt

[root@awake ~]# echo ${file%/*}                   //删除/和右边的字符串,最短匹配

/dir1/dir2/dir3

[root@awake ~]# echo ${file%%/*}                  //删除/和右边的字符串,最长匹配,全部删除完了,因此为空置



[root@awake ~]# echo ${file:5}

/dir2/dir3/my.file.txt                            //提取                  这个不知如何解释,没查到

[root@awake ~]# echo ${file:0:5}                  //提取第5个字节左边的5个 这个不知如何解释,没查到

/dir1

[root@awake ~]# echo ${file:5:6}                  //提取第5个字节的右边6个字节

/dir2/

[root@awake ~]# echo ${file/dir/path}             //用path替换最左边的dir,其中/应该是参考符,如果没有/的变量内容应该如何替换?

/path1/dir2/dir3/my.file.txt

[root@awake ~]# echo ${file//dir/path}            //用path替换全部的dir

/path1/path2/path3/my.file.txt

[root@awake ~]#

利用 ${ } 还可针对不同的变数状态(没设定、空值、非空值)赋值:

${parameter-word}

${parameter:-word}

${parameter:=word}

${parameter:?word} 当parameter指示的参数没有被设值的时候,将会通过标准错误的方式显示word中的语句。

${parameter:+word}

${!prefix*}

${#parameter}

${#var} 可计算出变量值的长度:

${#file} 可得到 27 ,因为/dir1/dir2/dir3/my.file.txt 是27个字节

如果old变量为未设定或叫不存在,那么将new=content

[root@awake ~]# unset new old

[root@awake ~]# echo ${old-content}

content

[root@awake ~]# new=${old-content}

[root@awake ~]# echo new=$new,old=$old

new=content,old=

如果old变量为空字符串,那么将new=空

[root@awake ~]# unset old new

[root@awake ~]# old=""

[root@awake ~]# new=${old-content}

[root@awake ~]# echo new=$new,old=$old

new=,old=

[root@awake ~]#

如果old变量为非空字符串,那么new=$old

[root@awake ~]# unset old new

[root@awake ~]# old=old

[root@awake ~]# new=${old-content}

[root@awake ~]# echo new=$new,old=$old

new=old,old=old

[root@awake ~]#

总结及其他字符整理

变量设置方式 old没有设置 old为空字符串 old已设置为非空字符串

new=${old-content} new=content new= new=$old

new=${old:-content} new=content new=content new=$old

new=${old+content} new= new=content new=content

new=${old:+content} new= new= new=content

new=${old=content} old=content

new=content old不变

new= old不变

new=$old

new=${old:=}

old=content

new=content

old=content

new=content

old不变

new=$old

new=${old?content}

content输出至stderr new= var=$str

new=${old:?content}

content输出至stderr content输出至stderr var=$str
分享到:
评论

相关推荐

    mysql-8.0.33-linux-glibc2.12-x86-64.tar.xz

    centos或linux系统中使用的源码安装包,亲测有效。 MySQL 8.0.33于2023年4月18日GA,这可能是包含新功能、新特性的8.0的最后一个版本,未来的MySQL版本将会在发行方式上发生重大改变。 MySQL 企业版审计功能使用...

    入门学习Linux常用必会60个命令实例详解doc/txt

    因为Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至在有的系统中会损坏硬件设备(硬盘)。在系统关机前使用 shutdown命令,系统管理员会通知所有...

    ansible-role-java-adopt-open-jdk11:Java 11的简便方法在Linux上采用Open JDK安装。 支持远程下载,官方软件包的本地下载,符号链接到最新文件夹,替代设置

    Java 11的简便方法在Linux上采用Open JDK安装。 支持远程下载,官方软件包的本地下载,符号链接到最新文件夹,替代设置。 特拉维斯(Travis)状态: 法规气候状态: 测试覆盖率状态: 目录 要求 没有任何。 安装 ...

    Ubuntu权威指南(2/2)

    1.1 Linux的兴起与发展 2 1.2 充分利用网上资源 3 1.2.1 Ubuntu官方网站 3 1.2.2 GNU网站 4 1.2.3 Linux文档项目网站 4 1.2.4 网上求助 5 1.3 随时查询随机文档 6 1.3.1 使用“--help”选项查询 命令的简单说明 6 ...

    Ubuntu权威指南(1/2)

    1.1 Linux的兴起与发展 2 1.2 充分利用网上资源 3 1.2.1 Ubuntu官方网站 3 1.2.2 GNU网站 4 1.2.3 Linux文档项目网站 4 1.2.4 网上求助 5 1.3 随时查询随机文档 6 1.3.1 使用“--help”选项查询 命令的简单说明 6 ...

    数据库基础

    §9.7.1 与用户、角色与权限有关的数据字典 209 §9.7.2 查询数据字典信息 209 第十章 其它一些常见问题及技巧 212 §10.1 一些常见问题 212 §10.1.1 Oracle与2000年问题 212 §10.1.2 如何正确插入日期数据 213 §...

    基于C++实现用户级线程库【100012060】

    本次课程设计的目标是开发一个用户级线程库,功能包括完整的线程创建/删除/joining,互斥锁,条件变量,以及一个基于优先级的调度器。完成此用户级线程库,可以使用该线程库编写多线程的应用,替代 Linux 中的 ...

    MySQL5 权威指南第3版中文版_part1

     10.4 变量与条件表达式(IF、CASE)  10.5 在数据表间复制数据  10.6 统计报表  10.7 子查询  10.8 保证数据的一致性  10.9 找出冗余的数据记录  10.10 数据表设计方案的改进  10.11 对前n条或后n条记录...

    mpw-tools:mpw兼容性层工具和支持文件

    这是与MPW模拟器一起使用的工具的集合。 其中一些是内置MPW命令的替代品。 其中一些是替换项(例如,原始的Duplicate具有图形确认框)。 有些只是方便使用。 这些在MPW模拟器下进行了测试。 由于实现上的差异,...

    MySQL 5权威指南(第3版) 中文版 下载地址

    内容提要 -----------------------------...他写了很多非常成功的计算机图书,内容涉及Visual Basic、Linux、Mathematica和Maple等多种程序设计语言和软件。Kofle还是Definitive Guide to Excel VBA第2版的作者。

    PHP开发实战1200例源码

    实例175 图像域替代提交按钮 211 实例176 跳转菜单实现页面跳转 213 实例177 上传图片预览 214 实例178 去掉下拉选项的边框 215 实例179 修改表单属性为弹出窗口 216 实例180 表单输入单元的文字设置 217 实例181 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例175 图像域替代提交按钮 211 实例176 跳转菜单实现页面跳转 213 实例177 上传图片预览 214 实例178 去掉下拉选项的边框 215 实例179 修改表单属性为弹出窗口 216 实例180 表单输入单元的文字设置 217 实例181 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例175 图像域替代提交按钮 211 实例176 跳转菜单实现页面跳转 213 实例177 上传图片预览 214 实例178 去掉下拉选项的边框 215 实例179 修改表单属性为弹出窗口 216 实例180 表单输入单元的文字设置 217 实例181 ...

    基于C语言开发实现的一个用户级线程库.zip

    本次课程设计的目标是开发一个用户级线程库,功能包括完整的线程创建/删除/joining,互斥锁,条件变量,以及一个基于优先级的调度器。完成此用户级线程库,可以使用该线程库编写多线程的应用,替代 Linux 中的 ...

    server-docker:Fer费迪服务器的Docker化版本以替换默认的Franz服务器

    Ferdi-server是Franz服务器的非官方替代品,可用于Ferdi客户端。 这是在Alpine Linux和Node.js(v10.16.3)上运行的的dockerized版本。 为什么要使用自定义的Ferdi服务器? 定制的Ferdi服务器可让您体验Ferdi客户...

    Xshell Plus6 v6.0.0003.zip

    Xshell支持VT100,VT220,VT320,XTERM,LINUX,SCOANSI和ANSI终端仿真,并提供各种终端外观选项替代传统的远程登录客户端。 (2)保护数据安全 在不断变化的网络环境中,采取必要的预防措施来保护您的数据非常...

    新版Android开发教程.rar

    • Linux (tested on Linux Ubuntu Dapper Drake) Supported Supported Supported Supported Development Development Development Development Environments Environments Environments Environments Eclipse IDE o...

Global site tag (gtag.js) - Google Analytics