我需要您使用bash >= 4
脚本来帮助我。
我正从远程主机检索一些文件来备份它们。 我有一个for循环遍历主机,每个测试连接,并启动一个检索各种文件的函数。
我的问题是我需要知道出了什么问题(以及如果),所以我试图将OK或KO值存储在数组中并稍后解析。
这是代码:
...
for remote_host in $hosts ; do
short_host=$(echo "$remote_host" | grep -o '^[^.]\+')
declare -A cluster
printf "INFO: Testing connectivity to %s... " "$remote_host"
if ssh -q "$remote_host" exit ; then
printf "OK!\n"
cluster[$short_host]="Reacheable"
mkdir "$short_host"
echo "INFO: Collecting files ..."
declare -A ${short_host}
objects1="/etc/krb5.conf /etc/passwd /etc/group /etc/fstab /etc/sudoers /etc/shadow"
for obj in ${objects1} ; do
if file_retrieve "$user" "$remote_host" "$obj" ; then
-> ${short_host}=["$obj"]=OK
else
${short_host}=["$obj"]=KO
fi
done
...
所以我使用名为cluster
的数组列出节点是否可以访问,另一个数组(以节点的短名称命名)列出单个文件的OK或KO。
执行时,我收到以下错误(第130行是我用上面箭头标记的行):
./test.sh: line 130: ubuntu01=[/etc/krb5.conf]=OK: command not found
我认为这肯定是一个synthax错误,但我无法修复它。我尝试了一堆没有成功的组合。
感谢您的帮助。
答案 0 :(得分:0)
由于数组名称包含在变量short_list
中,因此您需要eval
才能使分配工作:
${short_host}=["$obj"]=OK
将其更改为:
eval ${short_host}=["$obj"]=OK
eval ${short_host}=["$obj"]=OK
类似帖子: