As citações não são aninhadas. Você está tentando passar ssh
o comando remoto como uma cadeia de aspas duplas contendo um argumento de aspas simples para awk
e, dentro desse argumento, várias cadeias de caracteres com aspas duplas. Mas o shell vê cada uma dessas aspas duplas como o início ou o fim de uma cadeia de caracteres com aspas duplas, o que faz uma grande bagunça.
Especificamente, quando você usa "df -khP | column -t | awk '{print $5 " " $1 " " $2}'"
na lista de argumentos para ssh
, ele é analisado em várias cadeias de caracteres separadas entre aspas. O primeiro é "df -khP | column -t | awk '{print $5 "
, e como $variable
de substituição é feito dentro de strings com aspas duplas, e o script não recebeu 5 argumentos, a parte $5
é substituída por nada, fornecendo "df -khP | column -t | awk '{print ". O próximo é " $1 "
, que é expandido para "192.168.5.210" (porque esse é o primeiro argumento do script). Finalmente, há " $2}'"
, que se expande em "}" porque não há segundo argumento. ssh
, em seguida, cola-os juntamente com espaços entre, dando 'df -khP | coluna -t | awk '{print 192.168.5.210}' como o comando sendo executado. Não o que você queria.
Para fazer com que funcione corretamente, você precisa escapar (com barras invertidas) de certos caracteres dentro do que supostamente é uma única string longa com aspas duplas. Especificamente, todas as aspas duplas (para evitar que terminem a sequência entre aspas) e cifrões (para evitar que sejam expandidas como parâmetros ou qualquer outro). Qualquer backquote ou barra invertida também precisaria ser escapado se houvesse algum. Assim, este é o comando que você quer:
ssh 192.168.5.209 ssh root@$STRIP "df -khP | column -t | awk '{print \ \" \" \ \" \" \}'"
BTW, se eu entendi direito, a razão awk
imprime o que ele faz é analisar 192.168.5.210 como três números reais, 192.168, .5 e .210, e imprimi-los (com zeros à esquerda adicionados onde zeros necessários e deixados como irrelevantes) como "192.168", "0.5" e "0.21". Mas ele não imprime espaços entre eles, então ele aparece como "192.1680.50.21".