принимающая команда как параметр в 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 .

  • netstat: см. имя процесса, например, в `ps aux`
  • Вывод ps lstart изменен
  • В чем разница между командами ps и top?
  • Как найти PID конкретной программы?
  • Что означает `init ` в столбце COMMAND ps?
  • Параметры командной строки для стойки не отображаются в выводах ps или procfs
  • killall дает мне «никакого процесса найдено», но ps
  • Захват полной структуры процесса / стека
  • AIX, почему ps показывает имя процесса между квадратными скобками?
  • Как узнать команду, выполняемую процессом?
  • Список всех процессов без управления терминалом (только)?
  • Как получить название медиа, воспроизводимого в VLC или других медиаплеерах с использованием CLI?
  • Linux и Unix - лучшая ОС в мире.