Cześć.
ssh ufk@10.0.0.2 "bash -lc 'pm2 list | grep app | awk { print $3} '"
Muszę uruchomić polecenie, które tutaj wkleiłem. problem polega na tym, że już dwa razy uciekam ... "
uderzenie z i pm2 z '
. jak mogę uciec od awk?
wiem, że zadziała, jeśli wyjdę z awk „{print $ 3}”, ale polecenie all zostało już dwukrotnie zastąpione ... więc ... co mam zrobić?
aktualizacja
utworzyłem następujące polecenie bash:
PM2_APP_ID=`$REMOTE_SRV_SSH_COMMAND "bash -lc \"pm2 list | grep app | grep -v 'pm2 show' | awk '{ print \\\$4 }'\""`;
tutaj otrzymuję odpowiedni wiersz z listą wszystkich pm2, to tak, jakby awk nigdy nie był wykonywany.
bash
bash-scripting
awk
ufk
źródło
źródło
awk
może zrobić większość przypadkówgrep
i naprawdę nie potrzebujesz tych zrobionych zdalnie, więcssh u@h "bash -lc 'pm2 list' " | awk '/app/{print $3}'
też będzie działaćOdpowiedzi:
Nie można usuwać ukośników pojedynczych cudzysłowów w ciągach pojedynczych cudzysłowów, ale można wstawiać podwójne cudzysłowy w odwrotnym ukośniku wewnątrz ciągów podwójnych. Więc możesz to zrobić:
Musisz dwukrotnie uciec z $ w programie awk, aby uniknąć rozszerzenia $ 3, najpierw przez lokalną powłokę, a następnie przez zdalną.
źródło
dzięki @ dave_thompson_085 za komentarz, który pomógł mi rozwiązać problem.
używam następującego polecenia:
jak widać tutaj, używam listy pm2 na serwerze usuwania, a resztę robię lokalnie. bez kłopotów z ucieczką i działa poprawnie.
źródło