返回顶部
首页 > 资讯 > 精选 >如何分析Bash中的 {花括号}
  • 155
分享到

如何分析Bash中的 {花括号}

2023-06-16 09:06:34 155人浏览 薄情痞子
摘要

如何分析Bash中的 {花括号},很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在这里,我们先来看看花括号 {}。构造序列花括号在之前的《点的含义》这篇文章中已经

如何分析Bash中的 {花括号},很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

在这里,我们先来看看花括号 {}

构造序列

花括号在之前的《点的含义》这篇文章中已经出现过了,当时我们只对点号 . 的用法作了介绍。但在构建一个序列的过程中,同样不可以缺少花括号。

我们使用

echo {0..10}

来顺序输出 0 到 10 这 11 个数。使用

echo {10..0}

可以将这 11 个数倒序输出。更进一步,可以使用

echo {10..0..2}

来跳过其中的奇数。

echo {z..a..2}

则从倒序输出字母表,并跳过其中的第奇数个字母。

以此类推。

还可以将两个序列进行组合:

echo {a..z}{a..z}

这个命令会将从 aa 到 zz 的所有双字母组合依次输出。

这是很有用的。在 Bash 中,定义一个数组的方法是在圆括号 () 中放置各个元素并使用空格隔开,就像这样:

month=("Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec")

如果需要获取数组中的元素,就要使用方括号 [] 并在其中填入元素的索引

$ echo ${month[3]} # 数组索引从 0 开始,因此 [3] 对应第 4 个元素Apr

先不要过分关注这里用到的三种括号,我们等下会讲到。

注意,像上面这样,我们可以定义这样一个数组:

letter_combos=({a..z}{a..z})

其中 letter_combos 变量指向的数组依次包含了从 aa 到 zz 的所有双字母组合。

因此,还可以这样定义一个数组:

dec2bin=({0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1})

在这里,dec2bin 变量指向的数组按照升序依次包含了所有 8 位的二进制数,也就是 00000000、00000001、00000010,……,11111111。这个数组可以作为一个十进制数到 8 位二进制数的转换器。例如将十进制数 25 转换为二进制数,可以这样执行:

$ echo ${dec2bin[25]}00011001

对于进制转换,确实还有更好的方法,但这不失为一个有趣的方法。

参数展开

再看回前面的

echo ${month[3]}

在这里,花括号的作用就不是构造序列了,而是用于参数展开parameter expansion。顾名思义,参数展开就是将花括号中的变量展开为这个变量实际的内容。

我们继续使用上面的 month 数组来举例:

month=("Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec")

注意,Bash 中的数组索引从 0 开始,因此 3 代表第 4 个元素 "Apr"。因此 echo ${month[3]} 在经过参数展开之后,相当于 echo "Apr"

像上面这样将一个数组展开成它所有的元素,只是参数展开的其中一种用法。另外,还可以通过参数展开的方式读取一个字符串变量,并对其进行处理。

例如对于以下这个变量:

a="Too longgg"

如果执行:

echo ${a%gg}

可以输出 “too long”,也就是去掉了***的两个 g。

在这里,

  • ${...} 告诉 shell 展开花括号里的内容

  • a 就是需要操作的变量

  • % 告诉 shell 需要在展开字符串之后从字符串的末尾去掉某些内容

  • gg 是被去掉的内容

这个特性在转换文件格式的时候会比较有用,我来举个例子:

ImageMagick 是一套可以用于操作图像文件的命令行工具,它有一个 convert 命令。这个 convert 命令的作用是可以为某个格式的图像文件制作一个另一格式的副本。

下面这个命令就是使用 convert 为 JPEG 格式图像 image.jpg 制作一个 PNG 格式的图像副本 image.png

convert image.jpg image.png

在很多 linux 发行版中都预装了 ImageMagick,如果没有预装,一般可以在发行版对应的软件管理器中找到。

继续来看,在对变量进行展开之后,就可以批量执行相类似的操作了:

i=image.jpGConvert $i ${i%jpg}png

这实际上是将变量 i 末尾的 "jpg" 去掉,然后加上 "png",最终将整个命令拼接成 convert image.jpg image.png

如果你觉得并不怎么样,可以想象一下有成百上千个图像文件需要进行这个操作,而仅仅运行:

for i in *.jpg; do convert $i ${i%jpg}png; done

就瞬间完成任务了。

如果需要去掉字符串开头的部分,就要将上面的 % 改成 # 了:

$ a="Hello World!"$ echo Goodbye${a#Hello}Goodbye World!

参数展开还有很多用法,但一般在写脚本的时候才会需要用到。在这个系列以后的文章中就继续提到。

合并输出

最后介绍一个花括号的用法,这个用法很简单,就是可以将多个命令的输出合并在一起。首先看下面这个命令:

echo "I found all these PNGs:"; find . -iname "*.png"; echo "Within this bunch of files:"; ls > PNGs.txt

以分号分隔开的几条命令都会执行,但只有***的 ls 命令的结果输出会被重定向到 PNGs.txt 文件中。如果将这几条命令用花括号包裹起来,就像这样:

{ echo "I found all these PNGs:"; find . -iname "*.png"; echo "Within this bunch of files:"; ls; } > PNGs.txt

执行完毕后,可以看到 PNGs.txt 文件中会包含两次 echo 的内容、find 命令查找到的 PNG 文件以及***的 ls 命令结果。

需要注意的是,花括号与命令之间需要有空格隔开。因为这里的花括号 {} 是作为 shell 中的保留字,shell 会将这两个符号之间的输出内容组合到一起。

另外,各个命令之间要用分号 ; 分隔,否则命令无法正常运行。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: 如何分析Bash中的 {花括号}

本文链接: https://lsjlt.com/news/282987.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何分析Bash中的 {花括号}
    如何分析Bash中的 {花括号},很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在这里,我们先来看看花括号 {}。构造序列花括号在之前的《点的含义》这篇文章中已经...
    99+
    2023-06-16
  • linux中Bash如何使用花括号{}
    这篇文章主要为大家展示了“linux中Bash如何使用花括号{}”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中Bash如何使用花括号{}”这篇文章吧。花括号{}的使用通过括号扩展可以...
    99+
    2023-06-27
  • 如何使用编程中花括号
    本篇内容介绍了“如何使用编程中花括号”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先,以非块状语言为例所...
    99+
    2024-04-02
  • Bash中的尖括号怎么用
    这篇文章主要介绍Bash中的尖括号怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!通过使用 <,可以实现“欺骗”的效果,让其它命令认为某个命令的输出是一个文件。例如,在进行备份文件的时候不确定备份...
    99+
    2023-06-16
  • shell 中小括号、中括号及大括号的区别解析
    目录一、小括号,圆括号()1、单小括号 ()2、双小括号 (( ))二、中括号,方括号[]1、单中括号 []2、双中括号[[ ]]三、大括号、花括号 {}1、常规用法2、几种特殊的替换结构一、小括号,圆括号() 1、单小...
    99+
    2022-06-04
    shell 小括号中括号大括号的区别 shell 小括号中括号大括号
  • 怎么理解Bash中的尖括号
    怎么理解Bash中的尖括号,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。为初学者介绍尖括号。Bash 内置了很多诸如 ls、cd、mv 这样的重要的命令,也有很...
    99+
    2023-06-16
  • vue中花括号数据绑定失败如何解决
    这篇文章将为大家详细讲解有关vue中花括号数据绑定失败如何解决,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。如下所示:<!DOCTYPE h...
    99+
    2024-04-02
  • Bash脚本中括号和反引号的使用
    目录示例讨论总结在 Bash 脚本中,我们经常需要引用变量或者命令的执行结果来作为文件的名字或者日志的输出,在脚本或者 Shell 中我们可以使用反引号 或者括号 () 来获取到变量的内容 示例 示例 1 获取日期的输...
    99+
    2022-06-04
    Bash 括号和反引号 Bash 括号 Bash 反引号
  • Bash中尖括号的更多使用方法
    前言 在这篇文章,我们继续来深入探讨尖括号的更多其它用法。 在上一篇文章当中,我们介绍了尖括号(<>)以及它们的一些用法。在这篇文章,我们继续来深入探讨尖括号的更多其它用法。 通过使用 <,可以实现“欺...
    99+
    2022-06-04
    bash 尖括号 尖括号的使用
  • Bash 中如何分析 ASP 日志?
    ASP(Active Server Pages)是一种动态网页技术,常用于构建基于 Microsoft Windows 操作系统的 Web 应用程序。在 ASP 应用程序中,日志是一种非常重要的信息来源,可以帮助开发人员和运维人员了解应用...
    99+
    2023-11-06
    日志 windows bash
  • word如何插入括号分支
    本篇内容介绍了“word如何插入括号分支”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2023-04-07
    word
  • shell编程中如何分析bash变量
    本篇文章为大家展示了shell编程中如何分析bash变量,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。导读shell编程--bash变量介绍 ,变量是计算机内存的单元,其中存放的值可以改变。当&nb...
    99+
    2023-06-05
  • 深入理解Bash中的尖括号(适合初学者)
    前言 Bash 内置了很多诸如 ls、cd、mv 这样的重要的命令,也有很多诸如 grep、awk、sed 这些有用的工具。但除此之外,其实 Bash 中还有很多可以起到胶水作用的标点符号,例如点号(.)、逗号(,)、括...
    99+
    2022-06-04
    bash尖括号 尖括号的使用
  • windows中mathtype如何打大括号
    本篇内容主要讲解“windows中mathtype如何打大括号”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“windows中mathtype如何打大括号”吧! ...
    99+
    2022-12-01
    windows mathtype
  • 如何理解Shell中的中括号用法
    本篇文章给大家分享的是有关如何理解Shell中的中括号用法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。导读在计算机科学中,Shell俗称壳(用来区别于核),是指"为...
    99+
    2023-06-05
  • php中不要省略if后大括号的示例分析
    这篇文章主要为大家展示了“php中不要省略if后大括号的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php中不要省略if后大括号的示例分析”这篇文章吧...
    99+
    2024-04-02
  • 如何使用shell中的各种括号
    这篇文章主要讲解了“如何使用shell中的各种括号”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用shell中的各种括号”吧!在这里我想说的是几种shell里的小括号,大括号结构和有括...
    99+
    2023-06-09
  • bash中反引号和$()如何使用
    这篇文章主要介绍了bash中反引号和$()如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇bash中反引号和$()如何使用文章都会有所收获,下面我们一起来看看吧。在bash中,与(反引号)都是用来作命令替...
    99+
    2023-06-28
  • 正则表达式如何分别匹配多个括号中的值
    可以使用正则表达式中的分组来分别匹配多个括号中的值。首先,使用圆括号将要匹配的内容括起来,形成一个分组。例如,要匹配多个小括号中的值...
    99+
    2023-08-18
    正则表达式
  • php中字符串如何去掉括号
    本篇内容主要讲解“php中字符串如何去掉括号”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php中字符串如何去掉括号”吧!在PHP中,可以利用“str_replace()”函数去掉字符串中的括号...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作