Использование pidof pipe с wc -l в Bash не возвращает ожидаемое значение 0 - PullRequest
0 голосов
/ 01 мая 2019

Сценарий

Я пытаюсь использовать следующий код, чтобы убедиться, что одновременно работает только один из этих bash:

this_bash=$(basename $0)
this_pid=${$}
is_running="$(pidof -x $this_bash -o $this_pid | wc -l )"

Я обнаружил, что он всегда возвращает 1, дажекогда не работает ни один bash с тем же именем.

Расследование

Для дальнейшего изучения я попытался это сделать:

z=$(pidof -x $this_bash -o $this_pid)
echo "[$z]"
echo "[$(pidof -x $this_bash -o $this_pid)]"

echo "[$($z | wc -l )]"
echo "[$(pidof -x $this_bash -o $this_pid | wc -l )]"

квадратные скобки должны убедиться, что нетскрытые пробелы.
Результат был:

[]
[]
[0]
[1]

Вопрос

Я не понимаю, почему сохранение pidof в качестве переменной возвращает ожидаемый результат, в то время как команды передаются напрямуюне.

...