Bash:一行中使用管道符进行多条命令

Bash:一行中使用管道符进行多条命令

这个命令获取我的 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 替换为 who am i|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

相关内容