且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在bash脚本中将SSH输出捕获为变量

更新时间:2022-11-18 23:39:45

"time"命令将结果打印到stderr,而不是stdout.因此,它不会通过管道传递到您的变量中.

"time" command prints result to stderr, not to stdout. Thus it is not piped into your variable.

您应该将stderr重新路由到stdout以实现所需的功能:

You should reroute stderr to stdout to achieve what you want:

 result=$(ssh host time "command" 2>&1)

您的完整代码如下所示:

And your full code can look something like this:

 respond=$(ssh ${fromNode} /usr/bin/time "-f" "%e" "'sh' '-c' 'virsh migrate --live ${VM} qemu+ssh://${toNode}/system > /dev/null 2>&1'" 2>&1)