繁体   English   中英

循环BASH与计数器在一行中

[英]Loop BASH with counter in one line

我等待程序完成,什么也不打印; 但是这个介绍循环:

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赋值运算符周围可能没有空格
  • q ++必须放在双圆括号内
  • q <9必须为-lt(小于)
  • 在单括号中[$ q -lt 9] q需要为$ q
  • 该做应该遵循一段时间

可能的解决方案:

q=0; while [[ q -lt 3 ]]; do ((q++)); echo $q; done
1
2
3

回声值可以用

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

在使用文件重定向的位置查找文件0(而不是-gt),例如在echo foo > 0.file

代替

while [ 0 -gt 0 ]; do echo 1; done

因为它什么都不做。 它没有等待任何东西。 您的程序是顺序的,然后无论如何都将在此时完成。 或在后台运行的程序/命令,无论如何都不会在意此反循环。

对于第二个问题,请使用(((expr1; expr2; expr3))); 做清单; DONE

另请参阅man bash

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM