Мой сценарий оболочки запускается через SSH следующим образом:
ssh -i mycert.pem testuser@myserver.com <<SSHBLOCK
pm2 logs --lines 100 &
pid=$!
sleep 3
kill $pid
SSHBLOCK
Сценарий работает, как ожидалось, на локальном сервере (не заключенный в sshblock). Но когда мне нужно получить журналы на удаленном сервере, $ pid просто пусто. Почему $! пусто при использовании в SSHBLOCK выше?
Вы должны использовать кавычки '' или escape \ для удаленного расширения переменной. Итак, используйте здесь документ <<'SSHBLOCK'
ИЛИ<<\SSHBLOCK