我有一个看似非常简单的问题,但我无法提出令人满意的解决方案。我有一个包含 IP 和端口的简单输入文件,例如
10.155.78.0 445
172.17.11.0 3389
Run Code Online (Sandbox Code Playgroud)
现在我想为nc -vvv <ip> <port>for 循环中的每一行执行。
我能想到的就是用 cut 将线分割两次:
for x in $(cat inputfile); do nc -vvv $(echo -n $x | cut -d" " -f1) $(echo -n $x | cut -d" " -f2)
Run Code Online (Sandbox Code Playgroud)
或使用 gawk 并启动一个子 shell
for x in $(cat dingens); do cmd=$(echo $x | gawk -F" " '{ print "nc -vvv -w 2 " $1 " " $2 }'); echo -n $cmd | bash; done
Run Code Online (Sandbox Code Playgroud)
但两种解决方案似乎都非常复杂。没有更好的解决办法吗?
Pau*_*ant 11
while IFS=" " read -r Ip Port Junk <&3; do
nc -vvv "${Ip}" "${Port}" 3<&-
done 3< inFile
Run Code Online (Sandbox Code Playgroud)
的目的Junk是接收第二个之后的任何字段(例如,评论)。我们inFile在 fd 3 而不是 stdin 上打开,否则nc在该循环中调用也会最终读取inFile