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
分享到:
相关推荐
在Linux操作系统中,`rm`命令是用于删除文件或目录的基本工具。然而,由于`rm`命令一旦执行就无法撤销,对于重要的数据误删可能会带来严重后果。因此,有时我们可能需要替换`rm`命令,以增加额外的安全层或者提供...
- **Shell**:Linux系统的命令解释器,用户通过Shell与操作系统进行交互,执行各种命令。 - **脚本**:由Shell语言编写的文本文件,包含了可执行的命令序列,能够自动完成特定任务。 2. **重定向符号的使用** - ...
比如`ls`用于列出目录内容,`cd`用来切换目录,`mkdir`创建新目录,`rm`删除文件或目录,`cp`和`mv`分别用于复制和移动文件与目录。理解这些基本命令的用法,是Linux操作的基础。 文件管理是Linux系统中的核心部分...
它由Linus Torvalds于1991年创建,旨在提供一个免费且可定制的替代品,与传统的封闭源代码操作系统如Microsoft Windows形成对比。 在Linux系统中,用户界面可以是命令行界面(CLI)或图形化用户界面(GUI)。对于...
在IT领域,Linux操作系统是不可或缺的一部分,尤其对于服务器管理和软件开发人员来说,掌握Linux基础操作至关重要。本资料“Linux基础操作.zip”包含了关于Linux系统基本操作的指导,旨在帮助初学者快速入门。以下是...
本复习资料详细梳理了Linux的关键知识点,已经由班级内的高手们全面审核过,确保内容准确无误。 1. **Linux基础知识**: - Linux是一个开源的操作系统,基于Unix,由林纳斯·托瓦兹开发。 - Linux内核管理硬件...
Linux系统提供强大的网络管理工具,如`ifconfig`(查看或配置网络接口)、`ping`(检查网络连接)、`netstat`(查看网络状态)和`ss`(替代netstat的现代工具)。此外,`iptables`用于防火墙规则设置,`ssh`实现安全...
在Linux系统中,编写自动化备份脚本是一种常见且重要的任务,尤其对于...以上就是关于“linux自动备份sh脚本”的核心内容,通过这样的脚本,我们可以实现自动化、高效的数据备份策略,为Linux系统的数据安全提供保障。
通过对Linux系统的基本命令、启动过程、环境变量设置等方面的介绍,我们可以看出Linux作为一种强大且灵活的操作系统,在嵌入式开发领域具有不可替代的地位。对于希望从事嵌入式Linux开发的人来说,掌握Linux的基础...
centos或linux系统中使用的源码安装包,亲测有效。 MySQL 8.0.33于2023年4月18日GA,这可能是包含新功能、新特性的8.0的最后一个版本,未来的MySQL版本将会在发行方式上发生重大改变。 MySQL 企业版审计功能使用...
Linux Shell编程是Linux系统管理与自动化任务的核心技术之一,它主要指的是使用Shell脚本来执行一系列命令,实现自动化操作。在Linux环境中,Bash(Bourne-Again SHell)是最常用的Shell,也是许多Linux发行版的默认...
6. **文件与目录操作**:Shell提供了丰富的命令用于操作文件和目录,如`cd`改变当前目录,`ls`列出目录内容,`mkdir`创建目录,`touch`创建或修改文件时间戳,`cp`和`mv`进行文件复制和移动,`rm`删除文件或目录。...
3. **文件操作**:通过Shell,用户可以轻松地进行文件的复制、移动、重命名和删除,以及进行文件内容的搜索和替换。 4. **管道(Pipe)**:使用管道符号`|`,可以将一个命令的输出作为另一个命令的输入,实现命令间...
`cd`用于切换目录,`ls`用于列出目录内容,`mkdir`创建新目录,`rm`删除文件或目录,`cp`和`mv`用于复制和移动文件。理解权限模式(如rwx)和通配符(如*和?)也是基础操作的一部分。 2. **文本编辑器**:`vi`或`...
- 变量声明与赋值。 - 条件语句(`if...fi`)和循环语句(`for`, `while`)。 - 函数定义与调用。 - 输入/输出重定向(`, `>`, `>>`)。 - 调用外部命令(如`$()`或`` ` ``)。 - 错误处理与调试(`set -e`, `...
你会学习基本的命令行操作,如`ls`(列出目录内容)、`cd`(改变目录)、`mkdir`(创建目录)和`rm`(删除文件或目录)。此外,还将介绍文件权限和所有权的概念,这对于管理文件和目录至关重要。 在shell编程方面,...