принимающая команда как параметр в 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 работает нормально. Я получаю только один экземпляр процесса, пока я вызываю его с помощью этого скрипта.

2 Solutions collect form web for “принимающая команда как параметр в bash”

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 .

  • время ожидания блокировки с помощью команд ps
  • команда «ps» зависает
  • Что указывает состояние «прерывистого сна»?
  • Как убить несколько процессов
  • ps: Как получить процессы без потребления памяти?
  • Как перечислить только не несущие процессы?
  • Где найти исходный код для ps?
  • Почему процессы не заполняют пустые идентификаторы процессов
  • Один экземпляр скрипта, но только с одинаковыми аргументами
  • Инструмент стиля Solaris ptree для Linux
  • Как я могу предотвратить появление «grep» в результатах ps?
  • Linux и Unix - лучшая ОС в мире.