我有两个变量,如:
a=200
b=205
并希望查找这两个数字之间的所有数字(包括。这些指定的数字)。
答案 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
),但这不是bash内部函数。不幸的是,{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)