在终端输出中打印了特定字符串之后,如何在永久运行的bash脚本中启动下标?

时间:2018-11-18 02:20:48

标签: bash

详细信息:

我正在尝试构建一个bash脚本,它需要做几件事。

首先,它需要运行我无法操纵的第三方脚本。该脚本将构建一个项目,然后启动一个节点服务器,该节点服务器将数据连续输出到终端。这个过程需要无限期地继续,所以我不能有任何退出代码。

第二,我需要等待第一个脚本的特定输出行,即“启动您的应用程序”。

该行输出到终端后,我需要从另一个下标或if或while块中启动单独的命令集,这将更改由以下项构建的项目中的几行代码第一个解决某些依赖性的脚本,供以后使用。

因此,当特定行输出到终端时,我如何捕获第一个下标的输出并使用它来运行另一组命令,同时又允许第一个脚本在终端中运行,而无需使用计时器并且不会在下标1的输出中创建巨大的文件,因为它将无限期运行?

伪代码:

#!/usr/bin/env bash

# This script needs to stay running & will output to the terminal (at some point)
#     a string that we need to wait/watch for to launch subscript2
sh subscript1

# This can't run until subscript1 has output a particular string to the terminal
# This could be another script, or an if or while block
sh subscript2

我一直在努力将自己的头靠在办公桌上,试图使它正常工作。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

我认为这不是一个好主意-最好将subscript1更改为自动化友好型,但是从理论上讲,您可以这样写:

sh subscript1 \
| {
    while IFS= read -r line ; do
      printf '%s\n' "$line"
      if [[ "$line" = 'Started your app.' ]] ; then
        sh subscript2 &
        break
      fi
    done
    cat
  }