atualizar

atualizar

Olá.

ssh [email protected]  "bash -lc 'pm2 list | grep app | awk { print $3} '"

Preciso executar o comando que colei aqui. o problema é que já estou escapando duas vezes... o bash with "e o pm2 with '. como posso escapar do awk?

eu sei que funcionará se eu escapar com awk '{ print $3 }' mas o comando all já escapou duas vezes ... então .. o que eu faço?

atualizar

eu criei o seguinte comando bash:

PM2_APP_ID=`$REMOTE_SRV_SSH_COMMAND "bash -lc \"pm2 list | grep app | grep -v 'pm2 show' | awk '{ print \\\$4 }'\""`;

aqui eu recebo a linha relevante da lista all pm2, é como se o awk nunca tivesse sido executado.

Responder1

Você não pode escapar de aspas simples com barra invertida dentro de strings entre aspas simples, mas pode escapar de aspas duplas com barra invertida dentro de uma string entre aspas duplas. Então você poderia fazer isso:

ssh [email protected]  "bash -lc \"pm2 list | grep app | awk '{ print \\\$3 }'\""

Você precisa escapar do $ no programa awk duas vezes para evitar que o $3 seja expandido, primeiro pelo shell local e depois pelo remoto.

Responder2

obrigado @dave_thompson_085 pelo seu comentário, que me ajudou a resolver o problema.

estou usando o seguinte comando:

PM2_APP_ID=`$REMOTE_SRV_SSH_COMMAND "bash -lc 'pm2 list'" | grep app | grep -v 'pm2 show' | awk '{ print $4 }'`;

como você pode ver aqui eu uso a lista pm2 no servidor de remoção e o resto estou fazendo localmente. não há problemas em escapar das coisas e funciona corretamente.

informação relacionada