【发布时间】:2011-09-25 22:12:11
【问题描述】:
我目前在脚本中有以下几行代码:
set -A ARRAY OPTION1 OPTION2 OPTION3 OPTION4
set -A matches
for OPTION in ${ARRAY[@]}; do
DIFF=$(ssh $USER@$host " diff $PERSONALCONF $PRESETS$OPTION" )
if [[ $DIFF == "" ]]; then
set -A matches"${matches[@]}" $OPTION
fi
done
基本上,我有一个循环遍历预定义数组中的每个元素,连接到远程服务器(每次相同的服务器),然后使用 diff 命令将文件与循环定义的文件进行比较.基本上,它将personal.conf 文件与personal.conf.option1、personal.conf.option2 等进行比较。如果没有差异,则将其添加到数组中。如果有差异,则不会发生任何事情。
我想知道是否可以通过仅通过 SSH 连接一次的方式执行此操作或获得相同的结果(将匹配的文件存储在主机上的数组中,而不是正在连接的服务器上)。我无法在远程服务器上存储任何内容,也无法在该服务器上执行远程脚本。我只能通过 ssh 发出命令(有点愚蠢的设置)。目前,它连接的次数与选项一样多。这似乎效率低下。如果有人有更好的解决方案,我很想听听。
【问题讨论】:
-
注意确保它真正运行数组中的每个选项。如果您不将