Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Bash中循环使用参数列表:如何?_Bash_Shell_Rsync - Fatal编程技术网

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

在Bash中循环使用参数列表:如何?,bash,shell,rsync,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

这更像是一个理论问题,但假设我有一个主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作业,然后转到循环脚本中的下一个,等等

除了如何在脚本中将这三个值作为变量读取外,我什么都擅长

非常感谢您的想法或建议

干杯,丹

,读主机名源目标;做
while read hostname source destination; do
    rsync -a "$hostname:$source" "$destination"
done < backup-list.txt
rsync-a“$hostname:$source”“$destination” 完成

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

如果这么简单,我会感到尴尬,但很高兴我问了!让我来试一试……嘿,约翰,这似乎奏效了——感谢大家提出了如此简单而优雅的解决方案。只是好奇我怎么能读取由垂直管道或其他字符分隔的值?我也解决了最后一个问题:
while IFS='|'read-r hostname source destination;do rsync-a“$hostname:$source”“$destination”done