在Bash中查找两个数字之间的所有数字

时间:2013-06-13 14:46:43

标签: bash

我有两个变量,如:

a=200
b=205

并希望查找这两个数字之间的所有数字(包括。这些指定的数字)。

4 个答案:

答案 0 :(得分:9)

检查seq指令:

seq $a $b

答案 1 :(得分:1)

您可以使用bash C-style for loop。请注意,$a之前不需要b;这是bash arithmetic expressions.

的特征
for ((i=a; i<=b; ++i))                                
do
  echo $i
done

或者,捕获数组中的数字

arr=()
for ((i=a; i<=b; ++i))                                
do
  arr+=($i)
done
echo "${arr[*]}"

答案 2 :(得分:1)

好的工具是seq(已经说过ChronoTrigger),但这不是内部函数。不幸的是,{1..4}表示法不适用于变量。但有一个侧面:

a=200; b=205; eval "t=({$a..$b})"; echo ${t[*]}

输出:

200 201 202 203 204 205

生成的数组可以在以后的循环中使用。 for i in ${t[*]};{ ...;}。但最好使用for((...))循环来表示1_CR

<强> ADDED

如果它应该添加一些字符串作为前缀或后缀到所有元素,那么这很容易做到:

echo ${t[*]/#/ab}
echo ${t[*]/%/cd}

输出:

ab200 ab201 ab202 ab203 ab204 ab205
200cd 201cd 202cd 203cd 204cd 205cd

已添加#2

如果需要将固定的位数放在数组中,可以使用

a=0; b=5; eval "t=({$a..$b})"; printf -v tt "%03d " ${t[*]}; t=($tt)
echo Array length: ${#t[*]}
echo ${t[*]}

输出:

Array length: 6
000 001 002 003 004 005

答案 3 :(得分:0)

要回显两个数字之间的所有数字,可以使用AWK命令。

帮助链接= AWK

这是我的方式=

awk 'BEGIN{for(c=4;c<=8;c++) print c}'