如何打印编号从 shell 脚本中的模式从 n 到 1
how to print no. from n to 1 from the pattern in shell script
显示循环
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 行中打印它对我来说会很困难
直接错误是您的要求要求在每次迭代中从开始处减去两项,但您只减去一项。
更一般地说,可能完全避免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
并且,如此处所示,可能学会缩进代码以显示块的嵌套方式。
切线地,接受行数作为 command-line 参数可能比交互式提示输入值更好。当您想将脚本用作另一个更大脚本的一部分时,交互式 I/O 很烦人。
显示循环
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 行中打印它对我来说会很困难
直接错误是您的要求要求在每次迭代中从开始处减去两项,但您只减去一项。
更一般地说,可能完全避免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
并且,如此处所示,可能学会缩进代码以显示块的嵌套方式。
切线地,接受行数作为 command-line 参数可能比交互式提示输入值更好。当您想将脚本用作另一个更大脚本的一部分时,交互式 I/O 很烦人。