我正在尝试浏览远程计算机上的几个已知目录,并找到最新的完整备份文件夹。我们可以假设我从一系列SCP样式的路径开始,例如host:/path/to/dir
for path in ${paths[@]}
do
IFS=':' read host backupDir <<< "$path"
result=`ssh "$host" 'basename $(find '"$backupDir"'/* -type d -maxdepth 1)'`
echo "$result"
readarray -t backups <<<"$result"
echo "$backups"
for backup in "$backups"
do
echo 1
echo "$backup"
done
done
echo "$result"
建议SSH结果符合预期,列出了几个文件夹名称,每行一个。
但是,echo $backups
仅列出第一个文件夹,当然,内部循环类似地仅反映$ backups数组中的单个条目。我尝试过readarray
,我尝试过使用各种IFS设置的read -a
构造,但是对于如何正确处理SSH请求的输出却有些莫名其妙。
答案 0 :(得分:1)
如果那里有一个数组,则通过$array
访问它只会得到第一个元素。您应该使用${array[@]}
表示法。
for path in ${paths[@]}
do
IFS=':' read host backupDir <<< "$path"
result=`ssh "$host" 'basename $(find '"$backupDir"'/* -type d -maxdepth 1)'`
echo "$result"
readarray -t backups <<<"$result"
echo "${backups[@]}"
for backup in "${backups[@]}"
do
echo 1
echo "$backup"
done
done