在bash脚本中发送2个rsync命令的输出

时间:2013-06-17 15:51:17

标签: bash rsync

我使用现有的bash脚本并希望发送2个rsync命令的输出,以便将其传递给稍后将使用的变量,参见下文,

rfiles=$(rsync -rvlpogt /svntags/tags/ /var/www/html/) && $(rsync -rvlpogt /svnbranch/branches/ /var/www/html/)
ecode=$?
newfil=$(echo $rfiles | grep -c "Number of files transferred: 0")

但是,我只将第一个rsync的输出发送到我的邮箱。如何包含第二个rsync命令的输出以及第一个?

谢谢。

2 个答案:

答案 0 :(得分:1)

问题在于如何编写作业。它打破了你的界限:

rfiles=$(rsync -rvlpogt /svntags/tags/ /var/www/html/) && $(rsync -rvlpogt /svnbranch/branches/ /var/www/html/)

进入rfiles=$(rsync -rvlpogt /svntags/tags/ /var/www/html/) && $(rsync -rvlpogt /svnbranch/branches/ /var/www/html/)

因此,您只获得变量中第一个命令的输出。您需要将命令更改为

rfiles=$(rsync -rvlpogt /svntags/tags/ /var/www/html/ && rsync -rvlpogt /svnbranch/branches/ /var/www/html/)

用另一个例子说明:

samveen@precise:~$ a=$(echo 10) && $(echo 20)
-bash: 20: command not found
samveen@precise:~$ echo $a
10

答案 1 :(得分:0)

您可能希望将两个命令放在命令扩展中:

rfiles=$(rsync -rvlpogt /svntags/tags/ /var/www/html/ && rsync -rvlpogt /svnbranch/branches/ /var/www/html/)