основная проблема выглядит такif [ $(pidof "$package") ]
вот что делает команда:
"$package"
, предположитьfoo
pidof foo
и оставить вывод пустым или «бла» [ "blah" ]
, либо[ ]
Возможно, это не то, что вам нужно.
(Вы путаете вывод команды и код возврата)
вы хотите либо (, если pidof
имеет код возврата true, когда пакет найден)
if pidof "$package"
или (, если pidof
возвращает положительное целое число, когда пакет найден, и 0
, если нет)
if [ $(pidof "$package") != 0 ]
или (, если pidof
ничего не возвращает, когда результат не найден, согласно вашей трассировке)
if [ -n "$(pidof "$package")" ]
then (.. found..)
else (.. not found... )
fi
То же самое касаетсяwhile
для примечания, touch
после break
не будет работать.