我等待程序完成并且没有输出任何东西;但是这个循环介绍:
while [ 0 > 0 ]; do echo 1; done
逻辑上,0不是大于0的...为什么会进入循环?
我如何在屏幕上得到空白?而程序又可以正常结束?
在我的程序“无事可做”之后:
while [ 0 > 0 ]; do echo 1; done
我喜欢用一行代码表达:
q = 0; while [ q < 9 ]; q ++; do echo q; done
一行代码实现可能吗?
谢谢
q = 0; while [ q < 9 ]; q ++; do echo q; done
一行代码里有5个错误。
可能的解决方案:
q=0; while [[ q -lt 3 ]]; do ((q++)); echo $q; done
1
2
3
echo
完成。echo {1..9}
但它不够灵活,你无法在里面使用变量扩展,例如 echo {1..$n}
。进行初始化、增量和阈值检查的规范方法是使用 for 循环:
for (( q=1; q < 4; ++q)); do echo $q ; done
有一个外部程序seq,它并不是一个被强烈推荐的选择,原因如下:
seq 1 3
第一个问题:
while [ 0 > 0 ]; do echo 1; done
寻找一个使用文件重定向(而不是 -gt)的文件0,就像在 echo foo > 0.file
中一样。
而不是
while [ 0 -gt 0 ]; do echo 1; done
因为它什么都不做。它不等待任何东西。如果你的程序是顺序执行的,那么无论如何,在那个点上它都已经完成了。或者是在后台运行一个程序/命令,它根本不会理会这个反循环。
针对您的第二个问题,可以使用 for (( expr1 ; expr2 ; expr3 )) ; do list ; done
同时参考man bash。
0
的文件? - Toby Speight