Bash: несколько команд с конвейером на 1 строке


0

Эта команда получает мой IP-адрес:

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

выход:

10.22.184.126

эта команда отправляет команду ZPL 10.22.184.126 на порт 5964:

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

но если я заменю 10.22.184.126 на то, кто я | 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

тогда я получаю:

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

Каков правильный синтаксис, чтобы записать его в одну строку?

Ответы:


1

Я думаю, что это должно сделать это

$ (кто я | 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.