Bash序列表达式(范围)

时间:2020-03-05 15:31:38  来源:igfitidea点击:

在本文中,我们将介绍Bash中序列表达式的基本知识。

Bash序列表达式通过定义范围的起点和终点来生成整数或者字符的范围。
它通常与for循环结合使用。

Bash序列表达式

序列表达式采用以下形式:

{START..END[..INCREMENT]}
  • 表达式以左大括号开始,以右大括号结束。

  • 开始和结束可以是正整数或者单个字符。

  • 起始值和结束值是必需的,它们之间用两个点隔开,中间没有空格。

  • 增量值是可选的。
    如果存在,则必须用两个点…将其与结束值分隔开来,且两个点之间没有空格。
    当给定字符时,表达式按字典顺序展开。

  • 表达式扩展到开始和结束之间的每个数字或者字符,包括提供的值。

  • 格式错误的表达式将保持不变。

下面是实际操作的表达式:

echo {0..3}

未提供增量时,默认增量为1:

0 1 2 3

您也可以使用其他字符。
下面的示例打印字母表:

echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z

如果起始值大于结束,则表达式将创建一个递减范围:

for i in {3..0}
do
  echo "Number: $i"
done
Number: 3
Number: 2
Number: 1
Number: 0

当给定增量时,将其用作每个生成项之间的步长:

for i in {0..20..5}
do
  echo "Number: $i"
done

每个生成的数字都比前面的数字大5倍:

Number: 0
Number: 5
Number: 10
Number: 15
Number: 20

使用整数生成范围时,可以添加前导0以强制每个数字具有相同的长度。
要使用前导零前缀填充生成的整数,请执行以下操作:

for i in {00..3}
do
  echo "Number: $i"
done
Number: 00
Number: 01
Number: 02
Number: 03

表达式可以使用其他字符作为前缀或者后缀:

echo A{00..3}B
A00B A01B A02B A03B

如果表达式的构造不正确,它将保持不变:

echo {0..}
0..