为每个循环bash生成新行

时间:2016-10-19 11:52:49

标签: bash loops unix for-loop

我有关于bash输出的这个问题我需要编写输出的代码:

1
22
333

到目前为止使用循环我有这个代码:

First loop....
for ((i=1; i<=1; i=i+1))
do
    echo $i
done
#Second loop....
for ((i=1; i<=2; i++))
do

for ((j=2; j<=2; j++))
do
    echo -n $j

done
done
#Third loop.....
for ((i=1; i<=2; i++))
do

for ((j=2; j<=2; j++))
do
    echo -e $j

done
done

问题是它在第二个内部输出第三个循环,如

1 
223 
33

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

一个简单的嵌套for循环就足以做你想做的事了:

CODE:

for ((i=1; i<=5; i++))
do
    for((j=1; j<=$i; j++)) 
    do
        echo -n $i
    done
    echo
done

输出:

1
22
333
4444
55555

答案 1 :(得分:0)

在第一个循环结束后输出换行符:

for ((i=1; i<=3; i++)) ; do
    for ((j=1; j<=i; j++)) ; do
        echo -n $i
    done
    echo
done

请注意,在Perl中,您可以隐藏重复运算符x中的内部循环:

perl -le 'print $_ x $_ for 1 .. 3'

答案 2 :(得分:0)

尝试两个嵌套的for循环,其中包含从 STDIN 读取的交互式开始和结束值,如下所示:

# To make it more interactive
echo -n 'Enter start value: '
read START
echo -n 'Enter finish value: '
read FINISH

# Two nested for loops
for ((I=$START; I<=FINISH; I++))
do
    for ((J=$START; J<=$I; J++))
    do
        echo -n $I
    done
    echo
done