我有一个位于 serverA 上的 bash 脚本。该脚本将 ssh 到 serverB 并运行yarn top 命令,提取指标并放入 serverA 上的文件(test.txt)中。以下是我正在使用的命令:
ssh -oStrictHostKeyChecking=no -i <key> username@hostname "yarn top" | head -5 | grep -w 'Applications' | awk '{print "Pending_apps" "\t" $7}' >> test.txt
所以这里的问题是,在我的脚本运行上述命令后,它会进入交互模式,并且仅当我手动给出 crtl+c 或退出信号/命令时才会退出。
无论如何,在运行上述命令并将输出重定向到 test.txt 后,脚本应该移动到下一个命令。也就是说,在命令提示符下运行上述命令后,它应该将输出重定向到 test.txt 文件,然后返回到命令提示符/终端
答案1
一个简单的建议是,当你得到你想要的东西时就打破管道:
ssh -oStrictHostKeyChecking=no -i <key> username@hostname "yarn top" |
head -5 |
grep -w 'Applications' |
awk '{print "Pending_apps" "\t" $7; exit}' >> test.txt
这告诉 awk 在收到第一行输入后退出(因为代码块没有条件)。