Ulangi bagian dalam EOF - UNIX SCRIPTING

0

Saya menulis skrip untuk memulai aplikasi secara otomatis setiap kali kami menemukan kesalahan dalam log.

begitu

#/bin/bash

if [ grep -c 'error' logs -eq 0 ] ;then
  exit
else

start <<EOF ## start is  a script which starts the application

7 
c

Masalahnya adalah bahwa setelah menjalankan "mulai", saya harus memasukkan 7 dan setiap kali skrip berhenti dengan status "c-continue s-stop" ..i saya perlu menekan c terus sampai "mulai" mendapatkan status berjalan dengan sukses. Bagaimana saya bisa melakukan ini?

bagaimana cara memasukkan loop ke dalam EOF atau cara lainnya?

user491569
sumber
1
Jika start tidak membaca dari stdin, Anda mungkin perlu menulis expect naskah
Eric Renouf

Jawaban:

2

Bagaimana tentang:

{ echo 7; yes c; } | start

Penggunaan a konstruksi pengelompokan untuk memungkinkan output dari 2 perintah ke pipa ke skrip Anda.

glenn jackman
sumber
Asumsi start membaca dari stdin tentu saja
Eric Renouf
Jika tidak, maka heredoc juga tidak akan bekerja.
glenn jackman
Setuju, tapi saya rasa kita tidak cukup tahu untuk mengatakan bahwa heredoc sebenarnya bekerja
Eric Renouf
1

Peningkatan saya dari @ glennjackman menjawab :

#!/bin/bash

grep -q 'error' logs   &&   { echo 7; yes c; } | start
levif
sumber