我有简单的 bashnc
脚本:
#!/bin/bash
nc -k -l 127.0.0.1 4444 > filename.out
它监听4444
端口以进行TCP
连接。如果可能的话,我不想将接收到的数据重定向到filename.out
,而是将每个数据块(单行文本)传递给作为script.sh
参数。我怎么做?
提前致谢。
编辑:我也尝试过:
#!/bin/bash
nc -k -l 127.0.0.1 4444 | /path/to/script.sh
但这行不通
答案1
下面是多输入脚本的入口点。
#!/bin/bash
[ $# -ge 1 -a -f "$1" ] && input="$1" || input="-"
# your script's payload here
#!
我希望这句话是不言自明的
在第二行
$# -ge 1
并且正在测试至少一个命令行参数
-a
是布尔值和运算符
-f "$1"
正在测试第一个参数是否是文件
&&
后面是如果前面的条件成立则要执行的指令
||
接下来是如果测试条件不成立会发生什么
nc -k -l 127.0.0.1 4444 > filename.out
my_processing_script filename.out
-或者-
nc -k -l 127.0.0.1 4444 | my_processing_script
所以,如果我有一个参数并且它是一个文件,我的输入就是这个文件,如果没有,我的输入来自管道,即"-"
然后你就可以按照你的意愿运行你的东西了。任何一个
我测试的有效负载为
awk '{print $2}' ${input}
我的输入来自netstat -rn
命令并且可以以任何方式工作。我希望这就是你要问的