1

我有两个变量,例如:

a=200
b=205

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

4

3 回答 3

10

检查seq说明:

seq $a $b
于 2013-06-13T14:47:49.283 回答
2

好的工具是seqChronoTrigger如前所述),但这不是内部函数。不幸的是,该{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
于 2013-06-13T15:07:43.813 回答
1

您可以使用bash C 风格的 for loop。请注意,在and$之前不需要a 这是bash 算术表达式的特征。ab

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

或者,捕获数组中的数字

arr=()
for ((i=a; i<=b; ++i))                                
do
  arr+=($i)
done
echo "${arr[*]}"
于 2013-06-13T15:05:08.480 回答