bash: различное количество строк новой строки при назначении результата переменной [duplicate]

На этот вопрос уже есть ответ здесь:

Проверьте количество запущенных скриптов, используя ps 4 ответа

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

ps ax | grep -c "$0"

эта команда сама по себе дает ожидаемый результат. НО, если я пытаюсь присвоить вывод переменной, он увеличивается на единицу! Как бы я ни старался:

var=$(ps ax | grep "$0" | sed -n '$=')
var=`ps ax | grep -c "$0"`

Может кто-нибудь, пожалуйста, покажите мне правильный способ получения правильного вывода?

также было бы здорово узнать, почему это происходит ..

ОБНОВЛЕНИЕ после первого ответа от @fedorqui я понимаю, что я не был достаточно ясен. позвольте мне уточнить:

Я запускаю все три команды выше в одном и том же скрипте bash. Когда я запускаю первый, он печатает номер 2: сама программа и процесс grep с этой программой в качестве аргумента. когда я выполняю те же команды в назначениях переменных, число 3 сохраняется.

обратите внимание, что я использую два разных метода подсчета строк, grep и sed. в обоих случаях они возвращают 3 вместо правильного ответа, 2.

Вот сводный пример, чтобы попробовать в файле test.sh:

echo -n "without assignment: "
ps ax | grep -c "$0"
var=$(ps ax | grep "$0" | sed -n '$=')
echo "using sed method: $var"
var=`ps ax | grep -c "$0"`
echo "using grep method: $var"

результаты на моей коробке Debian:

without assignment: 2
using sed method: 3
using grep method: 3

снова вопросы: почему это происходит, и как предотвратить или обойти?

Ответы на вопрос(2)

Ваш ответ на вопрос