Você está realmente ecoando o comando em vez de executá-lo.
Os scripts bash são executados um por linha como comandos. Então esta linha:
echo 'Running Script'
É um equivalente exato da digitação de echo 'Running Script'
no shell. Tente você mesmo: ele produzirá Running Script
. Conclusão: echo
enviará todos os seus argumentos para o terminal.
Assimsendo,estalinha:
echo'echo-n-e"\x00\x00\x0A\x00 1 012601234'$x'12345\x00" | nc -w1 -u localhost 30000'
irá gerar echo -n -e "\x00\x00\x0A\x00 1 012601234'$x'12345\x00" | nc -w1 -u localhost 30000
para o terminal. Toda a linha é executada, o argumento é gerado.
Aindaparececonfuso,entãovamossimplificarumpouco:deixenossocomandoserecho'echo-n-e"blah"'
.
Vocêdisseparaenviarocomando,entãoeleemitiuocomando.Solteoecho
externoparaexecutá-lo.Comoo slhck sugeriu , você pode usar a variável colocando chaves:
echo -n -e "\x00\x00\x0A\x00 1 012601234${x}12345\x00" | nc -w1 -u localhost 30000
Ele executará o comando, mas não o emitirá. Se você deseja enviar o comando, tente isto:
cmd="echo -n -e \"\x00\x00\x0A\x00 1 012601234${x}12345\x00\" | nc -w1 -u localhost 30000"
echo $cmd
$cmd
A primeira linha atribui seu comando a uma variável cmd
, a segunda linha a envia e a terceira a executa. Parece confuso no início, mas é bem simples: o bash apenas substituirá as variáveis antes de executar um comando, então digitar o nome da variável fará com que seu conteúdo seja executado.