Linux简单循环

时间:2017-12-28 22:10:48

标签: while-loop sh ksh

我有日志文件不断更新30分钟,我实现了脚本,它将检查该日志文件,直到它成功"成功"写在其中的消息。到目前为止,我已在下面实施。任何帮助或更正将不胜感激。

  while [ "($cat R12TECH2.log | grep 'success')" != " " ]
  do
         echo "Please wait...devccm Adautoconfig is still running..."
         sleep 5
  done

          echo "Status of devccm adautoconfig"
          cat R12TECH2.log | grep 'success'
  exit

1 个答案:

答案 0 :(得分:0)

替换

while [ "($cat R12TECH2.log | grep 'success')" != " " ]

使用:

while ! grep -q 'success' R12TECH2.log

while语句不需要[...]语句。它将与任何提供令人满意的退出代码的命令一起使用。 grep就是这样一个命令。由于我们不关心grep命令的输出,我们使用-q来使其静音。

Grep和退出代码

考虑测试文件:

$ cat R12TECH2.log
line 1
success
line 3

grep命令返回成功(0):

$ grep -q 'success' R12TECH2.log; echo code=$?
code=0

但是,我们希望while循环仅在success不在文件中时运行。因此,提供一个前导!,告诉shell否定退出代码:

$ ! grep -q 'success' R12TECH2.log; echo code=$?
code=1