Napisałem skrypt powłoki o nazwie keepAbcdRunning, którego zadaniem jest sprawdzenie, czy polecenie / proces „abcd” działa, a jeśli tak nie jest, uruchomienie go.
keepAbcdRunning ma postać:
#!/bin/bash
if pgrep -x $1 > /dev/null
then echo "$1 is running"
else echo "calling $2"
$2
fi
exit 0
Jak już napisałem, keepAbcdRunning potrzebuje dwóch argumentów wejściowych, $1
to nazwa polecenia / procesu do sprawdzenia i $2
to polecenie potrzebne do uruchomienia abcd.
abcd sam w sobie jest skryptem, który wykonuje aplikację, która pobiera sformatowany ciąg Json jako dane wejściowe. Gdybym chciał zadzwonić do abcd bezpośrednio z terminala, zadzwoniłbym:
./abcd.sh '{\"type\":\"path\",\"key\":[]}'
Wydaje mi się jednak, że nie jestem w stanie przekazać sekwencji znaków w taki sposób, że abcd.sh jest poprawnie wywoływane z keepAbcdRunning ....
echo $1
w swoim skrypcie, aby zobaczyć, co $1
jest faktycznie przypisane?
--option=value
formularz. Zobacz: Najlepszy sposób na parsowanie argumentów wiersza poleceń w Bash (StackOverflow)
./abcd.sh '{\"type\":\"path\",\"key\":[]}`` why?!?!? Use
./abcd.sh -key = wartość -key = wartość` lub nawet./abcd.sh type=value&key=value&path=value