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
分享到:
相关推荐
centos或linux系统中使用的源码安装包,亲测有效。 MySQL 8.0.33于2023年4月18日GA,这可能是包含新功能、新特性的8.0的最后一个版本,未来的MySQL版本将会在发行方式上发生重大改变。 MySQL 企业版审计功能使用...
因为Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至在有的系统中会损坏硬件设备(硬盘)。在系统关机前使用 shutdown命令,系统管理员会通知所有...
Java 11的简便方法在Linux上采用Open JDK安装。 支持远程下载,官方软件包的本地下载,符号链接到最新文件夹,替代设置。 特拉维斯(Travis)状态: 法规气候状态: 测试覆盖率状态: 目录 要求 没有任何。 安装 ...
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 ...
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 §...
本次课程设计的目标是开发一个用户级线程库,功能包括完整的线程创建/删除/joining,互斥锁,条件变量,以及一个基于优先级的调度器。完成此用户级线程库,可以使用该线程库编写多线程的应用,替代 Linux 中的 ...
10.4 变量与条件表达式(IF、CASE) 10.5 在数据表间复制数据 10.6 统计报表 10.7 子查询 10.8 保证数据的一致性 10.9 找出冗余的数据记录 10.10 数据表设计方案的改进 10.11 对前n条或后n条记录...
这是与MPW模拟器一起使用的工具的集合。 其中一些是内置MPW命令的替代品。 其中一些是替换项(例如,原始的Duplicate具有图形确认框)。 有些只是方便使用。 这些在MPW模拟器下进行了测试。 由于实现上的差异,...
内容提要 -----------------------------...他写了很多非常成功的计算机图书,内容涉及Visual Basic、Linux、Mathematica和Maple等多种程序设计语言和软件。Kofle还是Definitive Guide to Excel VBA第2版的作者。
实例175 图像域替代提交按钮 211 实例176 跳转菜单实现页面跳转 213 实例177 上传图片预览 214 实例178 去掉下拉选项的边框 215 实例179 修改表单属性为弹出窗口 216 实例180 表单输入单元的文字设置 217 实例181 ...
实例175 图像域替代提交按钮 211 实例176 跳转菜单实现页面跳转 213 实例177 上传图片预览 214 实例178 去掉下拉选项的边框 215 实例179 修改表单属性为弹出窗口 216 实例180 表单输入单元的文字设置 217 实例181 ...
实例175 图像域替代提交按钮 211 实例176 跳转菜单实现页面跳转 213 实例177 上传图片预览 214 实例178 去掉下拉选项的边框 215 实例179 修改表单属性为弹出窗口 216 实例180 表单输入单元的文字设置 217 实例181 ...
本次课程设计的目标是开发一个用户级线程库,功能包括完整的线程创建/删除/joining,互斥锁,条件变量,以及一个基于优先级的调度器。完成此用户级线程库,可以使用该线程库编写多线程的应用,替代 Linux 中的 ...
Ferdi-server是Franz服务器的非官方替代品,可用于Ferdi客户端。 这是在Alpine Linux和Node.js(v10.16.3)上运行的的dockerized版本。 为什么要使用自定义的Ferdi服务器? 定制的Ferdi服务器可让您体验Ferdi客户...
Xshell支持VT100,VT220,VT320,XTERM,LINUX,SCOANSI和ANSI终端仿真,并提供各种终端外观选项替代传统的远程登录客户端。 (2)保护数据安全 在不断变化的网络环境中,采取必要的预防措施来保护您的数据非常...
• Linux (tested on Linux Ubuntu Dapper Drake) Supported Supported Supported Supported Development Development Development Development Environments Environments Environments Environments Eclipse IDE o...