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