Я новичок в написании сценариев bash, и я учился, когда я занимаюсь небольшим проектом, который я принимаю. Тем не менее, я столкнулся с проблемой, с которой я, похоже, не справился.Замена команды Bash переменной
У меня есть переменная, которую мне нужно включить в команду. При запуске непосредственно в оболочке (с введенной переменной вручную) команда возвращает ожидаемый результат. Однако я не могу заставить его работать при использовании переменной.
Итак, если я вручную запускаю это, он правильно возвращает 0 или 1, в зависимости от того, работает он или нет.
ps -ef | grep -v grep | grep -c ProcessName
Однако, когда я пытаюсь вставить, что в этот пункт в то время, он всегда принимает значение 0, потому что он не ищет правильный текст.
while [ `ps -ef | grep -v grep | grep -c {$1}` -ne 0 ]
do
sleep 5
done
Есть ли способ, которым я могу это сделать? Я пробовал множество разных вещей безрезультатно. Я также попытался использовать синтаксис $() для подстановки команд, но мне тоже не повезло.
Спасибо!
Почему у вас есть брекеты в тесте while, но не в вашем примере? А $ 1 имеет правильное значение? – Cascabel
Я поставил фигурные скобки в цикле while, потому что я думал, что я нуждаюсь в них там, чтобы обозначить переменную. Это может быть неверно, но удаление их не разрешает проблему для меня. И да, $ 1 имеет правильное значение. Я добавил 'echo $ 1' прямо перед оператором while, и это правильно. – grt3kl
Если вам нужно использовать фигурные скобки, знак доллара идет до открытия, и также неплохо процитировать его: '' $ {1} "'. Для получения полезной информации см. [Управление процессами] (http://mywiki.wooledge.org/ProcessManagement). –