Перезапуск исполняемого файла на основе терминального вывода

Используйте эту команду:

nano /root/.forward 

Вставьте, отредактируйте или удалите электронные письма в этот текстовый файл, Ctrl + X , [Y], чтобы сохранить файл.

0
06.07.2018, 00:23
2 ответа

Спасибо slm за то, что указал мне правильное направление!

# Start the program with Power-On Reset
# Use tee to print output to terminal and pipe to grep
# grep returns 0 if the string is found
sudo./program -PO | tee /dev/tty | grep -q "Processor Reset."

# Store the grep exit code in a variable
result="$?"

# If result is 0, grep found the Processor Reset string
if [ "$result" == "0" ]; then
  while : ; do
  sudo./program -PR | tee /dev/tty | grep -q "Processor Reset."
  result="$?"

# This loop will continue as long as the Processor Reset string is found
# once the program terminates
  [ "$result" == "0" ] || break
  done
fi
0
28.01.2020, 02:42

Что делать, если у вас есть такой сценарий оболочки:

$ cat top.bash
#!/bin/bash

echo "launched top.bash"
./fakeprog1.bash | grep -q "Processor Reset Received" && exec./fakeprog2.bash

Вы можете заменить ./fakeprog1.bashна свой ./program -POи ./fakeprog2.bashна свой ./program -PR.

Когда я запускаю свою версию, она работает так:

$./top.bash
launched top.bash
launching /root/453742/fakeprog2.bash

fakeprog1.bashотображает сообщение, но мы не можем его увидеть, потому что оно отфильтровывается с помощью grep. Журналы могут быть направлены в файлы + этот скрипт через tee, так что это не должно быть проблемой.

1
28.01.2020, 02:42

Теги

Похожие вопросы