принимающая команда как параметр в bash

У меня есть следующий простой скрипт, называемый single-instance, который выполняет данную команду, если нет процесса под этой командой. Если я жестко запрограммирую команду после инструкции else, она не сработает, но если я подстановлю жестко кодированную команду с помощью $ 1 или $ @, я не получу новый экземпляр команды. Есть ли механизм безопасности в bash для предотвращения такой команды?

#!/bin/bash if ps ax | grep -v grep | grep $1 > /dev/null;then wmctrl -xa $1 else # works fine if I switch $1 to terminator $1 fi 

Часть инструкции if работает нормально. Я получаю только один экземпляр процесса, пока я вызываю его с помощью этого скрипта.

Grep видит имя команды, которое вызывается «single-instance». Я добавил демон в опции grep, потому что на некоторых программах работает демон, хотя его экземпляр в Window Manager не существует.

 #!/bin/bash if ps -fp $(pgrep -d, "$1") egrep -v "single-instance|daemon" | grep $1;then wmctrl -xa $1 else $1 fi 

Спасибо, Микель, за то, что я решил выяснить это.

Что ты пытаешься сделать? Поддерживать ли какой-нибудь тип демон все время? Возможно, вам стоит взглянуть на systemd .