`

bash ${ } 用法总结

阅读更多

假设我们定义了一个变量为:

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

我们可以用 ${ } 分别替换获得不同的值:

  • ${file#*/}:拿掉第一条 / 及其左边的字串:dir1/dir2/dir3/my.file.txt
  • ${file##*/}:拿掉最后一条 / 及其左边的字串:my.file.txt
  • ${file#*.}:拿掉第一个 . 及其左边的字串:file.txt
  • ${file##*.}:拿掉最后一个 . 及其左边的字串:txt
  • ${file%/*}:拿掉最后一条 / 及其右边的字串:/dir1/dir2/dir3
  • ${file%/*}:拿掉第一条 / 及其右边的字串:(空值)
  • ${file%.*}:拿掉最后一个 . 及其右边的字串:/dir1/dir2/dir3/my.file
  • ${file%%.*}:拿掉第一个 . 及其右边的字串:/dir1/dir2/dir3/my

记忆的方法为

  • # 是去掉左边(在键盘上 # 在 $ 之左边)
  • % 是去掉右边(在键盘上 % 在 $ 之右边)
  • 单一符号是最小匹配;两个符号是最大匹配。

还可以按下标取指定长度的子串:

  • ${file:0:5}:提取最左边的 5 个字?:/dir1
  • ${file:5:5}:提取第 5 个字右边的连续 5 个字:/dir2

我们也可以对变量值里的字串作替换:

  • ${file/dir/path}:将第一个 dir 提换为 path:/path1/dir2/dir3/my.file.txt
  • ${file//dir/path}:将全部 dir 提换为 path:/path1/path2/path3/my.file.txt

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

  • ${file-my.file.txt} :假如 $file 为空值,则使用 my.file.txt 作默认值。(保留没设定及非空值)
  • ${file:-my.file.txt} :假如 $file 没有设定或为空值,则使用 my.file.txt 作默认值。 (保留非空值)
  • ${file+my.file.txt} :不管 $file 为何值,均使用 my.file.txt 作默认值。 (不保留任何值)
  • ${file:+my.file.txt} :除非 $file 为空值,否则使用 my.file.txt 作默认值。 (保留空值)
  • ${file=my.file.txt} :若 $file 没设定,则使用 my.file.txt 作默认值,同时将 $file 定义为非空值。 (保留空值及非空值)
  • ${file:=my.file.txt} :若 $file 没设定或为空值,则使用 my.file.txt 作默认值,同时将 $file 定义为非空值。 (保留非空值)
  • ${file?my.file.txt} :若 $file 没设定,则将 my.file.txt 输出至 STDERR。 (保留空值及非空值))
  • ${file:?my.file.txt} :若 $file 没设定或为空值,则将 my.file.txt 输出至 STDERR。 (保留非空值)

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

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

接下来介绍一下  bash 的数组(array)处理方法:
一般而言,A="a b c def" 这样的变量只是将 $A 替换为一个单一的字串,
但是改为 A=(a b c def) ,则是将 $A 定义为数组。
bash 的数组替换方法可参考如下方法:

  • ${A[@]} 或 ${A[*]} 可得到 a b c def (全部数组)
  • ${A[0]} 可得到 a (第一个数组),${A[1]} 则为第二个数组...
  • ${#A[@]} 或 ${#A[*]} 可得到 4 (全部数组数量)
  • ${#A[0]} 可得到 1 (即第一个数组(a)的长度),${A[3]} 可得到 3 (第一个数组(def)的长度)
  • A[3]=xyz 则是将第 4 个数组重新定义为 xyz ...

一句话总结:bash 很强大!

分享到:
评论

相关推荐

    Git使用及命令详解

    #### 四、小结 本文详细介绍了Git的基本概念、工作流程以及一系列常用命令的操作方法。通过掌握这些知识,你可以更加高效地管理和协作项目。无论是个人开发者还是团队合作,Git都是不可或缺的工具之一。希望这些...

    linux 字符串操作

    以上总结了在 Linux 环境下对字符串进行操作的一些常用技巧和方法。这些技巧可以帮助开发者和系统管理员更高效地处理文本数据,无论是进行简单的文本分析还是构建复杂的脚本。通过这些工具和技术的灵活运用,可以极...

    Linux CentOS下shell显示-bash-4.1$不显示用户名路径.docx

    Linux CentOS 下 shell 显示-bash-4.1$ 不显示用户名路径解决方法 ...然而,在某些情况下,shell 显示-bash-4.1$ 不...同时,我们也了解了 .bash_profile 文件、PS1 变量、export 命令和 source 命令的作用和使用方法。

    Centos7部署kongv0.14.x 完整文档

    ### Centos7部署Kong v0.14.x 完整文档 ...通过学习本教程,不仅能掌握Kong的安装方法,还能加深对相关技术的理解。 请注意,实际部署过程中可能遇到各种问题,建议参考官方文档或寻求专业人士的帮助解决。

    curl-7.65.0.tar.gz

    - 使用POST方法发送数据: ```bash $ curl -d "key=value" http://example.com/api ``` - 设置HTTP头: ```bash $ curl -H "Content-Type: application/json" http://example.com/api ``` ### `curl`与其他...

    在Linux下禁用IPv6的方法小结.docx

    ### 在Linux下禁用IPv6的方法详解 #### 引言 随着互联网技术的不断发展与进步,IPv6作为一种新的网络协议版本被广泛推广和使用。它旨在解决IPv4地址空间耗尽的问题,提供更大的地址池。然而,由于IPv4在当前互联网...

    Linux中使用wget进行下载的方法.docx

    下面我们将详细讲解这些功能及其用法。 1. **下载单个文件** 使用`wget`的基本语法是提供URL来下载文件,如: ```bash $ wget http://example.com/file.zip ``` 这将直接下载指定的文件到当前目录。 2. **...

    Bash Reference Manual.pdf --- Bash手册

    Bash 参考手册是学习和掌握 Bash 的必备资料,为用户提供了一个详尽的指南,涵盖了 Bash 的各种特性和用法。 二、什么是 Bash? Bash 是一个命令语言解释器,同时也是一种脚本编程语言,它允许用户与操作系统进行...

    linux BASH中文手册

    ”、“使用小窍门”和“注意事项”等部分提供了额外的信息和建议,帮助读者避免常见的错误,提升效率。 #### 六、章节概览 - **第一章:总体介绍** - **解析**: - **奸失央失**:解释了Bash的概念及其重要性。 ...

    man bash 中文PDF 版

    - **重要性**: 由于 Bash 在几乎所有现代 Linux 发行版中都是默认 shell,因此了解它的使用方法对于 Linux 用户和系统管理员来说至关重要。 #### 5. **学习资源** - **Chinese Manual Page 项目**: 该项目提供了一...

    Bash guide

    在Bash中定义函数并调用它们的方法是脚本编程中的重要概念。 **6. 输入/输出重定向** 在Bash中,可以使用`和`>`进行输入和输出重定向,将命令的输出重定向到文件,或将文件内容作为命令的输入。此外,`>>`用于追加...

    gentoo的bash配置文件

    总结来说,Gentoo的bash配置文件提供了强大的自定义能力,通过`.bashrc`和`bash.bashrc`,我们可以调整控制台颜色,设置环境变量,定义别名,以及更多其他功能。正确理解和使用这些配置文件,将有助于提升Gentoo用户...

    bash编程方法,很详细,很实用

    ### bash编程方法详解 #### 一、Bash编程概述 **Bash**(Bourne Again SHell)是一种广泛使用的Unix shell,它不仅适用于日常的命令行操作,而且还能用来编写功能强大的脚本程序。在Linux环境中,Bash是默认的交互式...

    Bash的特性介绍BashInfo

    本文将详细介绍Bash的一些关键特性和实用命令,帮助读者更好地理解和掌握Bash的使用方法。 #### 二、Bash与其它Shell的区别 1. **与csh的区别**: - **语法风格**:Bash采用了类似于sh的语法风格,而csh(C shell...

    Mysql数据库安装要求

    本节将详细介绍在Linux环境下安装MySQL数据库的方法,主要包括下载安装资源库、安装MySQL服务、设置表名大小写不敏感、修改默认密码以及创建远程管理用户等内容。 ##### 2.1 下载并安装资源库 根据目标系统的版本...

    AIX系统上安装BASH程序

    然而,在使用过程中,部分用户可能会习惯于使用Linux下的Bash shell来进行操作管理。由于AIX默认使用的Shell为Korn Shell (ksh),这导致了从Linux环境切换至AIX环境的用户会感到不适应。 为了改善这一状况,本文将...

    Linux bash练习小小的题

    根据给定的信息,我们可以提取并总结出以下与Linux bash相关的知识点: ### 1. 显示当前用户和工作目录 在Linux环境下,我们经常需要获取当前登录的用户名以及所在的工作目录。下面的脚本实现了这一功能。 ```...

Global site tag (gtag.js) - Google Analytics