Linux 尝试在bash中使用嵌套while循环以递增顺序打印数字
我正在尝试编写一个bash脚本,它将接收许多行,并打印出每一行,在每一行上添加一个额外的数字,直到达到用户指定的行数为止Linux 尝试在bash中使用嵌套while循环以递增顺序打印数字,linux,bash,unix,while-loop,Linux,Bash,Unix,While Loop,我正在尝试编写一个bash脚本,它将接收许多行,并打印出每一行,在每一行上添加一个额外的数字,直到达到用户指定的行数为止 #/bin/bash printf“%0s\n”输入行数 读x n=0 而[“$n”-lt$x]; 做 # y=“$n” 而[0-le“$y”]; 做 printf“$y” 让我来-- 完成 回音 让n++ 完成 x=5的电流输出: 0 1 0 2 1 0 3 2 1 0 4 3 2 1 0 0 0 1 0 1 2 0 1 2 3 0 1 2 3 4 这和我想
#/bin/bash
printf“%0s\n”输入行数
读x
n=0
而[“$n”-lt$x];
做
#
y=“$n”
而[0-le“$y”];
做
printf“$y”
让我来--
完成
回音
让n++
完成
x=5的电流输出:
0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
0
0 1
0 1 2
0 1 2 3
0 1 2 3 4
这和我想要的差不多。我想要相反的顺序。
需要x=5的输出:
0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
0
0 1
0 1 2
0 1 2 3
0 1 2 3 4
我只是为了得到空白或printf错误的无限循环而玩弄逻辑。我是新手,非常感谢您的帮助。您可以用一种更简单的方式:
#!/bin/bash
read -p "Enter the number of lines: " x
for (( n = 1; n <= x; n++ )); do
for (( y = 0; y < n; y++ )); do
echo -n "$y "
done
echo
done
我想脚本是不言自明的,但是如果您有任何问题,请告诉我。我使用@markp fuso的评论设法找到了一个解决方案。看起来像这样
#/bin/bash
printf“%0s\n”输入行数
读x
n=0
而[“$n”-lt$x];
做
#
y=0
而[$y-le“$n”];
做
printf“$y”
让我来++
完成
回音
让n++
完成
x=5的输出
0
0 1
0 1 2
0 1 2 3
0 1 2 3 4
虽然我希望是这样,但我应该使用嵌套的While循环。我很欣赏这个例子!这确实有助于我理解使其工作所需的逻辑。我仍然可以修改这个来得到一个解决方案。将
for
循环转换为等价的while
循环并不困难。祝你好运明确地说,for((x;y;z));做done
相当于x;而y;做Z完成
要颠倒数字顺序,只需将代码更改为具有y
从0
开始,然后计数到n
,例如:y=0;而[“${y}”-le“${n}]”;打印“$y”;让y++;完成