【问题标题】:generating new line for each loop bash为每个循环 bash 生成新行
【发布时间】:2016-10-19 11:52:49
【问题描述】:
我有这个关于 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
感谢您的帮助。
【问题讨论】:
标签:
bash
loops
unix
for-loop
【解决方案1】:
一个简单的嵌套 for 循环就足以满足您的需求:
代码:
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
【解决方案2】:
在第一个循环结束后输出换行符:
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'
【解决方案3】:
尝试两个嵌套的 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