我有两个变量,例如:
a=200
b=205
并想找出这两个数字之间的所有数字(包括这些指定的数字)。
检查seq
说明:
seq $a $b
好的工具是seq
(ChronoTrigger
如前所述),但这不是bash内部函数。不幸的是,该{1..4}
符号不适用于变量。但有一个侧面:
a=200; b=205; eval "t=({$a..$b})"; echo ${t[*]}
输出:
200 201 202 203 204 205
生成的数组可以稍后在 for 循环中使用。for i in ${t[*]};{ ...;}
. 但最好按照所述使用for((...))
循环1_CR
。
添加
如果应该为所有元素添加一些字符串作为前缀或后缀,那么很容易做到:
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
您可以使用bash C 风格的 for loop。请注意,在and$
之前不需要a 这是bash 算术表达式的特征。a
b
for ((i=a; i<=b; ++i))
do
echo $i
done
或者,捕获数组中的数字
arr=()
for ((i=a; i<=b; ++i))
do
arr+=($i)
done
echo "${arr[*]}"