BASH - 循环前和循环后运行命令

BASH - 循环前和循环后运行命令

我在使用 shell 脚本时遇到了一些问题。这个问题太愚蠢了,我甚至羞于开口问,但我就是想不通。

这是脚本:

#!/bin/bash

MAGAZINE="
    192.168.49.3
    192.168.49.5
"

SYNC="192.168.250.40"

#mount //$SYNC/PozeSync /home/alex/pozesync -o user=magazin,password=,sec=ntlm &&

for magazin in $MAGAZINE; do
    if ping -c 1 -t 1 $magazin &> /dev/null
        then
            echo "$magazin is down"
        else
            echo "$magazin is up"
            mount -t cifs //$magazin/PozeUpload /home/alex/mounts -o user=Administrator,password= &&
            rsync --bwlimit=1000 -r /home/alex/mounts/* &&
            rm -rf /home/alex/mounts/* &&
            umount /home/alex/mounts &&
            echo "$magazin done" >> sync.log
    fi
done

#umount /home/alex/pozesync

如您所见,有两行被注释了。如果我取消注释,脚本将无法正常工作。它不会挂载 pozesync 文件夹,然后在循环中尝试加载文件夹时抛出一些 samba 错误。

如果我运行 mount/umount 命令而不使用循环,它工作正常。如果我运行循环而不使用 mount/umount 命令,它工作正常。

将它们一起运行然后...

192.168.49.3 is up
rsync: link_stat "/home/alex/mounts/*" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1165) [sender=3.1.1]

我究竟做错了什么?

答案1

这是我的错误:

rsync --bwlimit=1000 -r /home/alex/mounts/* &&

应该

rsync --bwlimit=1000 -r /home/alex/mounts/ &&

干杯!

相关内容