Jsi si trochu přesunul ten kód na
https://github.com/filip2cz/ntfy-server-status/blob/main/netcat-server-sending/ntfy-netcat-serverPořádně jsem si to prohlédl a myslím, že vím čeho jsi chtěl dosáhnout. Tak jsem ti základní engine přepsal a zbytek si tam dopiš dle svého uvážení:
#! /usr/bin/env bash
LOGZAP="ano"
LOGVYP="ano"
LOCALSERVERPORT=4444
while :
do
STATUS=
STATUS=`timeout 5s nc -l -w 1 -p $LOCALSERVERPORT`
if [[ $STATUS ]]; then
if [[ $LOGZAP ]]; then
echo spustil se server
LOGZAP=
LOGVYP=ano
# sem si dej kód/logování o spuštění serveru
fi
HLASKA="Jede to"
# sem patří kód když server běží
else
if [[ $LOGVYP ]]; then
echo zastavil se server
LOGVYP=
LOGZAP=ano
# sem si dej kód/logování o zastavení serveru
fi
HLASKA="Nejede to"
# sem patří kód když server neběží
fi
echo $HLASKA
done
Odzkoušeno a jede to na 100%. Ono je trochu ošemetné psát scripty v bash. On má totiž bash takovou svou divnou logiku a člověk musí na to tak nějak pořád dbát a myslet. Třeba, že všechny proměnné jsou v bash řetězce! Takže nemá moc cenu testovat jaká je návratová hodnota, ale zda vůbe nějaká je. Je to rychlejší a méně náročné na systémové prostředky:
na openSUSE serveru stejný error:
/home/filip/ntfy/ntfy-ssfs: řádek 16: [: =: očekáván unární operátor
Třeba tady je návratová hodnota nic a to nic se chce matematicky porovnat s jedničkou. Bash si myslel, že se jedná o unární operátor. V mém scriptu používám unární operátory a to ještě v tom nejzákladnějším původním smyslu (tak trochu booleova logika), buď to je anebo není.
Dále systém dereferencí a substitucí je kolikrát taky na bednu. Pokud člověk nedělá v bash dost často, tak to bývá u rozsáhlejších projektů peklo. Hlavně pokud píše něco v jiných jazycích a pak se přepnout na bash logiku je kumšt. Osobně když něco potřebuji, tak si to většinou sesmolím v pythonu.
Měj se fajn a přeju mnoho úspěchů v učení programovacích jazyků.