【发布时间】:2019-08-01 13:50:48
【问题描述】:
我正在尝试循环连接到多个主机并通过 ssh 运行一些命令/脚本,并将结果存储在本地 var 中。我正在使用这里的文档,但我对是否应该引用它有点困惑,因为我使用的是本地变量和远程声明的变量的混合。什么是正确的语法?我需要什么逃脱?
for host in $HOSTS; do
RESULT+=$(ssh -T $host <<EOF
H=`dirname $HOME`
M=`mount | grep $H | grep nfs`
[[ "$M" ]] && MYFILE=$WD/file1 || MYFILE=$WD/file2
cd $WD && monit.sh $MYFILE
EOF
)
done
$RESULT 和 $WD 是本地变量,而其他变量是远程变量。上述结果是本地变量具有预期值,而所有远程声明的变量都是空的($H、$M、$MYFILE..) 如果我将 EOF 括在单引号中,结果会以某种方式反转:$WD 为空,而 $H 和 $M 获得正确的值($MYFILE 也有,但没有 $WD 部分)
非常感谢
【问题讨论】: