Bash: Erro de sintaxe - token próximo inesperado 'else'

Bash: Erro de sintaxe - token próximo inesperado 'else'

Tudo bem, eu absolutamente não entendo por que o bash está lançando esse erro para mim. Criei um script que verifica se uma unidade está montada em um diretório. Se uma unidade estiver montada, ela executa algumas tarefas de rsync (e imprime o status em um log). Se não estiver montado, ele deverá me enviar um e-mail (correio redigido do código).

Mas sempre que executo esse código, recebo um "Erro de sintaxe: token inesperado próximo a 'else'". Por que esse erro de sintaxe está acontecendo?

Eu tentei com 1 [ en 2 [[ com a instrução f, executei o script no sudo, mas sem dados.

Comentários extras adicionados ao código para que você possa ver a lógica;).

#!/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

Responder1

Sim, encontrei: coloquei && depois do meu último comando, logo antes da instrução 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

...

Ao remover o &&, o erro desaparece:

...

# 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

...

informação relacionada