在 Linux 上编写 shell 脚本时,操作或遍历一系列文件和目录是一项相当常见的任务。当处理大量具有连续后缀的对象时,没有人愿意手动编写长串命令。这时,bash 和 seq 就可以派上用场了。
本文介绍如何在 Bash 中使用花括号展开和 seq 命令行生成字母或数字序列。
什么是 seq 命令?
从历史上看,seq 命令的出现是为了弥补传统 Bourne shell 的一个缺陷,即它没有任何遍历数字的方式,for 语句只能循环遍历单词列表。seq 命令可以在某些 Unix 系统以及大多数 Linux 发行版中找到。该命令现在是 GNU coreutils 软件包的一部分。seq 命令仅适用于数字序列,不适用于字母序列。
如今,大多数 shell(如 Bash)都具有内置的数字迭代功能,这使得 seq 的使用不那么普遍了。
Bash 中的花括号展开是什么?
Bash 在执行命令之前会对命令执行各种替换操作,花括号展开就是其中之一。其语法使用花括号 {} 作为简写方式,使命令更短。
例如,mv myImage.{jpeg,jpg} 等同于 mv myImage.jpeg myImage.jpg。
⚠️ 花括号展开在任何其他展开之前执行。花括号内的展开或表达式不会被解释。这意味着花括号内的变量不会被展开为其值。
如何在 Bash 中打印数字序列?
通常有两种生成数字序列的方法。你可以使用命令行工具 seq,或者在 Bash 中使用花括号展开 {}。后者是首选方式,因为 seq 不保证在脚本运行的系统中存在。你可以使用 步长 数字来生成偶数、奇数序列或任何其他间隔,示例:{<起始>..<结束>[..<步长>]}
# 使用 seq
[me@linux ~]$ seq 1 10
1 2 3 4 5 6 7 8 9 10
# 使用带步长(增量)的 seq
[me@linux ~]$ echo "Even Numbers:" $(seq 0 2 10)
Even Numbers: 0 2 4 6 8 10
# 使用花括号展开
[me@linux ~]$ echo

702

被折叠的 条评论
为什么被折叠?



