循环BASH,计数器在一行

时间:2018-03-23 00:54:40

标签: bash loops

我等待程序完成并且什么都不打印;但这个循环介绍:

// {object-id} is the comment id
/v2.12/{object-id}/private_replies

逻辑上0不是>到0 ... 为什么要循环?

如何通过屏幕获取任何内容?并且程序完好无损?

在我的程序之后“无事可做”:

while [ 0 > 0 ]; do echo 1; done

我喜欢一行:

while [ 0 > 0 ]; do echo 1; done

可以一行吗?

由于

2 个答案:

答案 0 :(得分:4)

q = 0; while [ q < 9 ]; q ++; do echo q; done

一行中只有5个错误。

  • q = 0在赋值运算符周围可能没有空格
  • q ++必须是双圆形的
  • q&lt; 9必须是-lt(小于)
  • 在单括号中[$ q -lt 9] q需要为$ q
  • do应该遵循while

可能的解决方案:

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

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

而不是

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

因为它什么也没做。它不等任何事情。要么你的程序是顺序的,那么无论如何它都会完成。或者在后台运行时有一个程序/命令,无论如何都不关心这个反循环。

答案 1 :(得分:0)

关于第二个问题,请使用     for((expr1; expr2; expr3));做清单;完成

另请参阅man bash