如何打印编号从 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 很烦人。