Я хочу получить PID bash и выделить его, если он находится в каком-то текстовом файле (предположим, что это так). Поэтому, когда я печатаю это в моей оболочке:Как grep pidof bash в сценарии оболочки?
grep -o $(pidof bash) test.txt
это просто прекрасно работает и дает мне нужный выход, PID Баш. Тогда почему этот сценарий не работает:
#!/bin/bash
PID=$(grep -o $(pidof bash) test.txt)
echo $PID
я получаю только несколько строк с:
Grep: ххх: файл или каталог не найден
ххх являются случайными числами, но обычно последний - тот, который я ищу.
Как достичь этого и почему вышеуказанное не работает?
Как это связано с созданием нового процесса оболочкой при вызове grep в скрипте?
спасибо.
«$ BASH_PID» - это подходящий инструмент для использования, или '$$' (в зависимости от того, какой именно PID оболочки вам нужен - родительская оболочка или подоболочка, начинающаяся с '$()'). –
... 'pidof' - это, вообще говоря, инструмент, который лучше всего избегать, если вы не найдете лучшего способа определить конкретный процесс - любая система будет иметь * lots * экземпляров bash, запущенных в любой момент времени. –