Без nohup после потери связи с родительским процессом помрет оно
Это если эмулятор терминала пошлёт SIGHUP. В некоторых случаях этого не происходит. Попробуй, например, по ssh на localhost зайти, запустить что-то в фоне и выйти.
nohup это просто чтобы процесс не помер когда родительский умрет, его обычно комбинируют с && чтобы детачить сразу с консоли.
screen более продвинут в этом плане, у него поумолчанию запуск с nohup, а дальше он является родителем процессов (сессией для консоли), но при этом от него можно детачнуться и приаттачиться обратно, что удобно.
Если программа интерактивная, и к ней надо подключиться потом, то tmux attach || tmux new (должен быть tmux), если нет, то, как уже писали выше - nohup prog_name &
зачем два раза выполнять test, если можно выполнить его один раз? а если надо много сравнений? оптимизация? не, не слышали моя правка превратила твой быдлокод в отличное решение