PSVersão 5.1.22621.4391
plink: Versão 0.82
Eu tentei escapar corretamente do comando awk do powershell pelo plink, mas um desses programas continua comendo aspas simples.
Existe alguma maneira de executar esse comando pelo plink?
echo "select setting from pg_settings where name = 'server_version';"
Exemplos do meu fracasso:
PS C:\Users> plink -load "FIS-S-LBX-PGS-202-a" -batch echo "select setting from pg_settings where name = 'server_version';"
select setting from pg_settings where name = server_version
PS C:\Users> plink -load "FIS-S-LBX-PGS-202-a" -batch echo --% "select setting from pg_settings where name = 'server_version';"
select setting from pg_settings where name = server_version
PS C:\Users> plink -load "FIS-S-LBX-PGS-202-a" psql -c --% 'select setting from pg_settings where name = ''server_version'';'
Access granted. Press Return to begin session.
ERROR: column "server_version" does not exist
LINE 1: select setting from pg_settings where name = server_version;
PS C:\Users> plink -load "FIS-S-LBX-PGS-202-a" -batch psql -c "select setting from pg_settings where name = 'server_version';"
psql: warning: extra command-line argument "pg_settings" ignored
[recorte]
PS C:\Users> plink -load "FIS-S-LBX-PGS-202-a" -batch psql -c --% "select setting from pg_settings where name = 'server_version';"
psql: warning: extra command-line argument "pg_settings" ignored
Você chegou perto com o último -- isso impede que o PS coma aspas (duplas), mas o plink é igualmente quociente, então você precisa de uma barra invertida para impedir isso:
Ou você pode parar PS com acento grave e depois plink com barra invertida:
(mas para mim isso é simplesmente feio!)
Na verdade, era o shell remoto que estava comendo as aspas simples e, quando você faz o plink enviar as aspas duplas, isso interrompe o shell remoto e fornece um único argumento,
-c
conforme necessário.