Bash: Erro de sintaxe - próximo símbolo 'else' inesperado [fechado]

1

Tudo bem, eu absolutamente não entendo porque o bash está jogando esse erro para mim. Eu criei um script que verifica se uma unidade está montada em um diretório. Se uma unidade estiver montada, ela executará algumas tarefas de rsync (e imprimirá o status em um log). Se não estiver montado, ele deve me enviar um e-mail (e-mail redigido a partir do código).

Mas sempre que executo este código, ele me lança 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 declaração f, executei o script sob 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
    
por Timo Verbrugghe 26.09.2016 / 17:22

1 resposta

3

Sim, achei: eu coloco & & depois do meu último comando logo antes da declaraçã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

...
    
por 26.09.2016 / 17:26