Bash: Ошибка синтаксиса — Неожиданный близкий токен 'else'

Bash: Ошибка синтаксиса — Неожиданный близкий токен 'else'

Ладно, я совершенно не понимаю, почему bash выдает мне эту ошибку. Я создал скрипт, который проверяет, смонтирован ли диск в каталоге. Если диск смонтирован, он выполняет некоторые задачи rsync (и выводит статус в журнал). Если он не смонтирован, он должен отправить мне письмо (сообщение удалено из кода).

Но всякий раз, когда я запускаю этот код, он выдает мне "Ошибка синтаксиса: неожиданный токен рядом с 'else'". Почему происходит эта синтаксическая ошибка?

Я попробовал с 1 [ en 2 [[ с оператором f, запустил скрипт под sudo, но ничего не вышло.

В код добавлены дополнительные комментарии, чтобы вы могли увидеть логику ;).

#!/bin/bash
#Print to log that check is starting
printf "Checking if Backup drive is successfully mounted\n" >>/home/fileserver/Applications/Backup/logs/backup.log 2>&1 &&

# Start check
if [[ $(mount | grep -c /home/fileserver/Backup4TB) != 0 ]]; then

# If check is successfull, print it to log & start the backup
printf "Backup Drive successfully mounted, Backing up Applications folder to USB Backup Drive\n" >>/home/fileserver/Applications/Backup/logs/backup.log 2>&1 &&

# Backup using rsync
rsync --log-file=/home/fileserver/Applications/Backup/logs/rsync.log -avhP --delete /home/fileserver/Applications/ /home/fileserver/Backup4TB/Applications >/dev/null 2>&1 &&

# Print to log
printf "Backing up Books folder to USB Backup Drive\n" >>/home/fileserver/Applications/Backup/logs/backup.log 2>&1 &&

# Backup using rsync
rsync --log-file=/home/fileserver/Applications/Backup/logs/rsync.log -avhP --delete /home/fileserver/Media/Books/ /home/fileserver/Backup4TB/Books >/dev/null 2>&1 &&

# SYNTAX ERROR IS HERE - If check is unsuccessfull
else

# Print error to log
printf "ERROR - Mount was insuccesfull, sending email as warning\n" >>/home/fileserver/Applications/Backup/logs/backup.log 2>&1 &&

# Email me
/usr/sbin/ssmtp "MYEMAIL" < /home/fileserver/Applications/Backup/mountingerror/mountingerrorBackup.txt

fi

решение1

Да, нашел: я помещаю && после последней команды, прямо перед оператором else:

...

# Backup using rsync
rsync --log-file=/home/fileserver/Applications/Backup/logs/rsync.log -avhP --delete /home/fileserver/Media/Books/ /home/fileserver/Backup4TB/Books >/dev/null 2>&1 &&

# SYNTAX ERROR IS HERE - If check is unsuccessfull
else

...

При удалении && ошибка исчезает:

...

# Backup using rsync
rsync --log-file=/home/fileserver/Applications/Backup/logs/rsync.log -avhP --delete /home/fileserver/Media/Books/ /home/fileserver/Backup4TB/Books >/dev/null 2>&1 

# SYNTAX ERROR IS HERE - If check is unsuccessfull
else

...

Связанный контент