Ваш первый скрипт не работает, вам нужно
if [ "$(cmd)" != "active" ]
вместо
if [ "cmd" != "active" ]
Второй скрипт выглядит хорошо.
Позаботьтесь об отрицательных условиях в сочетании с &&
. Это может не дать результата, который вы ищете. Я думаю, вы хотите ||
вместо &&
.
Вам не нужна опция g
для замены sed
здесь, но это тоже не помешает.
Но было бы более элегантно, если бы вы использовали systemctl
встроенные функции:
systemctl is-enabled httpd.service >/dev/null || echo "Service not enabled"
systemctl is-active httpd.service >/dev/null || echo "Service not active"
systemctl is-failed httpd.service >/dev/null && echo "Service is failed"