在Bash中循环使用参数列表:如何?

时间:2014-01-30 23:44:33

标签: bash shell rsync

这更像是一个理论问题,但是我要说我有一个主Rsync脚本,我想用它将多个远程主机备份到同一目的地。

我想让脚本读取一个文本文件,每行包含主机名,源,目的地,并按照以下方式行:

host-one.example.com /Volumes/data /Volumes/host-one-backup
host-two.example.com /Volumes/Users /Volumes/host-two-backup
host-three.example.com /Volume/apps /Volumes/host-three-backup

然后是一个简单的Rsync脚本,它将相应地弹出三个值,运行该Rsync作业,然后在循环脚本中转到下一个等。

除了如何将三个值作为脚本中的变量读取之外,我对所有事情都很满意。

非常感谢您的想法或建议!

干杯,丹

1 个答案:

答案 0 :(得分:0)

while read hostname source destination; do
    rsync -a "$hostname:$source" "$destination"
done < backup-list.txt

酷/棘手的部分是将整个循环视为复合命令并对其应用重定向。这导致每个read调用从文件中读取一行,因为stdin在循环期间被重定向。