Bash 从单个ssh连接的输出创建多个变量

Bash 从单个ssh连接的输出创建多个变量,bash,shell,Bash,Shell,我正在编写一个bash脚本,该脚本目前正在对多个变量执行以下操作: variable1=$(ssh -T user@hostname "command one") variable2=$(ssh -T user@hostname "command two") variable3=$(ssh -T user@hostname "command three") variable4=$(ssh -T user@hostname "command four") 是否有一种简单的方法(除

我正在编写一个bash脚本,该脚本目前正在对多个变量执行以下操作:

variable1=$(ssh -T user@hostname "command one")  
variable2=$(ssh -T user@hostname "command two")  
variable3=$(ssh -T user@hostname "command three")  
variable4=$(ssh -T user@hostname "command four")  
是否有一种简单的方法(除了将多个命令的输出粘贴到一个文件中,然后使用该文件)在一个ssh连接上从不同的远程命令分配多个变量?

否。bash*中没有“返回”,当然也没有通过ssh。您所能做的就是通过stdout和stderr传递数据


*所有进程和函数的退出值都是介于0和255之间的int,在一个函数中,您可以使用
return
以特定值退出,但它实际上不会像任何其他语言那样返回任何内容

通过“编写SSH库”(通过包装器)可以更好地控制所需内容。例如,在Perl中,可以使用库,如

您可以通过一个$ssh实例执行多个命令(与使用shell多次调用ssh命令行工具相反)。
这只是一个例子

可以通过在一个SSH命令中执行所有命令,然后将每个命令的输出返回到一个数组中来实现

最后,根据需要迭代数组和进程

代码:

输出:

> ./sshtest.sh
Out: 1 2
Out: 3
#!/bin/sh

IFS=$'\n'
VARS=`ssh user@host 'echo 1 2; echo 3'`

for A_VAR in $VARS; do
    echo "Out: $A_VAR"
done
> ./sshtest.sh
Out: 1 2
Out: 3