顯示回圈
7 6 5 4 3 2 1
5 4 3 2 1
3 2 1
1
如何列印這個圖案不知道從 n 列印到 1
read -p "Enter rows:" rows
for ((a=$rows;a>=1;a--))
do
for ((b=$rows;b>$a;b--))
do
echo -n " "
done
for ((c=1;c<=$a;c ))
do
echo -n '* '
if [ $c = $a ]
then
echo -e '\n'
fi
done
done
如果我將 n 設為 7,請幫助列印此模式回圈沒有足夠的空間,然后在 4 行中列印對我來說將很困難
uj5u.com熱心網友回復:
直接的錯誤是您的要求要求在每次迭代中從一開始就減去兩項,但您只減去一項。
更一般地說,可能echo -e完全避免;printf如果您需要對換行符等進行詳細控制,請學習使用。
for ((a=$rows; a>=1; a-=2)); do
printf -v sep "%$((rows - a))s" ""
for ((b=$a; b>=1; b--)); do
printf "%s%i" "$sep" "$b"
sep=" "
done
printf '\n'
done
而且,正如這里所展示的,可能會學習縮進代碼以顯示塊是如何嵌套的。
相切地,接受行數作為命令列引數可能比互動式提示輸入值更好。當您想將腳本用作另一個更大腳本的一部分時,互動式 I/O 很麻煩。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/436711.html
