Bash: vários comandos com pipe em 1 linha

0

Este comando obtém meu endereço IP:

who am i|cut -d "(" -f2 | cut -d ")" -f1

saída:

10.22.184.126

este comando envia um comando ZPL para 10.22.184.126 na porta 5964:

printf '\x5eXA\x7eSD30\x5ePR6\x5ePW544\x5eLL0333\x5eML39,989\x5eJM1280,12\x5eID\x5eJUS\x5eXZ\x5eXA\x5eWD\x5eXZ'|nc 10.22.184.126 5964

mas se eu substituir 10.22.184.126 por quem sou | cut -d "(" -f2 | cut -d ")" -f1 assim:

printf '\x5eXA\x7eSD30\x5ePR6\x5ePW544\x5eLL0333\x5eML39,989\x5eJM1280,12\x5eID\x5eJUS\x5eXZ\x5eXA\x5eWD\x5eXZ'|nc who am i|cut -d "(" -f2 | cut -d ")" -f1 5964

então eu recebo:

nc: port range not valid
cut: 5964: No such file or directory

Qual é a sintaxe correta para escrever em uma linha?

    
por LukAss741 19.05.2014 / 11:56

1 resposta

1

Acho que isso deve fazer isso

$ (quem sou eu | cut -d "(" -f2 | cut -d ")" -f1)

printf '\x5eXA\x7eSD30\x5ePR6\x5ePW544\x5eLL0333\x5eML39,989\x5eJM1280,12\x5eID\x5eJUS\x5eXZ\x5eXA\x5eWD\x5eXZ'|nc "$(who am i|cut -d "(" -f2 | cut -d ")" -f1)" 5964
    
por 19.05.2014 / 12:22

Tags