Создайте служебную единицу systemd, как описано здесь , и обязательно включите строку «Restart = always». Systemd - это Arch-эквивалент выскочки. Минимальная конфигурация будет выглядеть так:
[Service]
ExecStart=
Restart=always
Вам может потребоваться напрямую вызвать интерпретатор и предоставить ваш скрипт в качестве аргумента в зависимости от того, какой шебанг используется в вашем скрипте.
В строке 1 команда в обратных кавычках отправляет свой стандартный вывод в цикл for ...
. Он ничего не выводит на экран, если не возникла ошибка одной из команд (например, ls
может пожаловаться на отсутствие пути к каталогу).
grep
в строке 3 действительно записывает в stdout . Возможно, вам нужен флаг -q
для тихого режима.
Я пытаюсь понять, что вы на самом деле пытаетесь сделать, потому что я думаю, что с этим, вероятно, можно справиться гораздо проще:
for item in atk/*
do
test -d "$item" && echo "${item/*\/}" | grep -Fvf atk/versions
done
Кстати, использование обратных кавычек для интерполяции команд больше не считается хорошим стилем кодирования. Лучше использовать конструкцию $ (...)
. Например, для версии в $ (ls ... awk)