我使用现有的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命令的输出以及第一个?
谢谢。
答案 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/)