Используя во время чтения, выполните L oop в сценарии bash, чтобы проанализировать вывод командной строки - PullRequest
1 голос
/ 07 августа 2020

Итак, я пытаюсь создать скрипт, который будет ждать определенной строки в выводе команды, запускающей другой скрипт.

Я столкнулся с проблемой, когда мой скрипт не переместится за эту строку кода

$(source path/to/script/LOOPER >> /tmp/looplogger.txt)

Я перепробовал почти все варианты, которые только мог придумать для этой строки

ie. (./LOOPER& >> /tmp/looplogger.txt)

bash /path/to/script/LOOPER 2>1& /tmp/looplogger.txt et c.

По какой-то причине я не могу заставить его работать в подоболочке и иметь остальную часть скрипта go о его дне.

Я пытаюсь запустить сценарий из другого сценария и получить доступ к его выводам, а затем проанализировать строку за строкой, пока не будет найдена определенная строка.

Затем, как только эта строка будет найдена, мой сценарий уничтожит указанный сценарий ( что я знаю, если он получен, тогда родительский скрипт тоже завершится).

Скрипт, который запускает петлитель, а затем пытается его убить-

#!/bin/bash

# deleting contents of .txt
echo "" > /tmp/looplogger.txt

#Code cannot get past this command
$(source "/usr/bin/gcti/LOOPER" >> /tmp/ifstester.txt)


while [[ $(tail -1 /tmp/looplogger.txt) != "Kill me" ]]; do
        sleep 1
echo ' in loop ' >> /tmp/looplogger.txt

done >> /tmp/looplogger.txt

echo 'Out of loop' >> looplogger.txt

#This kill command works as intended
kill -9 $(ps -ef | grep LOOPER | grep -v grep | awk '{print $2}')

echo "Looper was killed" > /tmp/looplogger.txt

Я пробовал использовать while IFS= read -r тоже. для приведенного выше сценария. Но я нахожу этот синтаксис немного запутанным.

Скрипт лупера -

./LOOPER

#!/bin/bash

# Script to test with scripts that kill & start processes
let i=0

# Infinite While Loop
while :
do
i=$((i+1))
        until [ $i -gt 10 ]
        do
                echo "I am looping :)"
                sleep 1
                ((i=i+1))
        done
echo "Kill me"
sleep 1

done

Извините за мой очень многословный вопрос.

...