Hej
Jestem poczatkujacy jeśli chodzi o basha. Mam problem z poniższym skryptem. Wywala mi się na linii 8 i 10.
Dla linii 8 mamy: }": command not found
Dla linii 10 mamy: [: : integer expression expected
Jeżeli wie ktoś jak zmodyfikować poniższe aby poprawić te błędy to prosze o pomoc.
Cel skryptu to w nieskończonej pętli while po nazwach procesów (które są odpalane wcześniej po starcie linuxie przez inny skrypt w user spejsie) znaleźć pid.
Jeżeli pid nie istnieje (-1) to zrobić reboota linuxa.
Docelowo miało być otwarcie /dev/watchdog przed pętlą while i brak zapisu do watchdoga gdy nie znajdzie pida co spowoduje też restart, ale nie wiem jak w bashu kominikowac się z kernel spejcem. W C++ mamy ioctl. Totez zostałem przy prostszej wersji z rebootem linuxa.
#!/bin/bash
SERVICES=('tail' 'tail')
while true
do
for SERVICE in "${SERVICES[@]}"; do
var="ps -A | grep '${SERVICE}' | awk '{print $1}'" #linia 8
if [ "$var" -eq "-1" ]; then #linia 10
echo "${SERVICE} not found in process list, system will be rebooted"
reboot
fi
done
sleep 5
done
exit 0