"Syntax error: Unterminated quoted string"

141,851

Solution 1

The line with

DROPBOX="/root/Dropbox/Backups

does not have a " at the end.

The MYSQL, MYSQLDUMP and GZIP variables refer to the programs used to execute various commands. So they should contain the path of those programs:

MYSQL="/usr/bin/mysql"
MYSQLDUMP="/usr/bin/mysqldump"
GZIP="/bin/gzip"

You can use the output of which <program name> to see what to put there:

$ which mysql
/usr/bin/msql
$ which gzip
/bin/gzip

Solution 2

I faced the same issue as seen below.

MY_VAR="123"#comments

then I put a space before # character, then solved.

Share:
141,851

Related videos on Youtube

Hamza
Author by

Hamza

Updated on September 18, 2022

Comments

  • Hamza
    Hamza over 1 year

    I am trying to use a backup script that will backup my sql database and website files. I am running Ubuntu 12.04 32 bit version and zPanel.

    Also what are these variables:

    MYSQL="$()"
    MYSQLDUMP="$()"
    GZIP="$()"

    I assume the first one is DB name.

    Here is the script:

    #!/bin/sh
    #----------------------------------------------------------------
    # Daily Backup Routine - Backup and Sync to Dropbox
    # This script creates a backup using today's date, then deleted
    # any backups made 3 days ago. If run every day it will ensure
    # you have a week's worth of backups of your MySQL databases and
    # zPanel web directories. 
    #
    # Uses whatever Dropbox account is running on the server.
    #
    # Written by Richard Ferreira for the backup of zPanel websites.
    # Contact me - richard[at]beetle001.com
    #----------------------------------------------------------------
    #
    # Before we get started, we should set some parameters. We'll need these for later.
    # The webserver's datafiles:
    WEBDIR="/var/zpanel/hostdata/"
    # Where do we want the backup to go?  (SET THIS - IT'S A TEMP FOLDER)
    BACKUP="/root/backup-temp"
    # Where is our dropbox folder? (SET THIS TO YOUR ABSOLUTE BACKUP PATH)
    DROPBOX="/root/Dropbox/Backups
    # What do we want our date to look like?
    NOW=$(date +"%d-%m-%Y")
    # We need to know the date 3 days ago to purge any backups that were made 3 days ago.
    # This ensures we don't keep unnecessarily old backups.
    # It doesn't matter if it skips one every now and then - we'll just have to check manually from time to time.
    # If you want to keep more days backups, change the "3 days ago" to "x days ago"
    DAYSAGO=$(date --date="3 days ago" +"%d-%m-%Y")
    # What should our file backup look like?
    WEBFILE="webdirs-full-$NOW.tar.gz"
    # Our MySQL Login information and some paths (we'll use 'which' to make sure we get them):
    SQLUSER="root"
    # Don't forget to change the root password here!
    SQLPASS="xxxxxxxxxxxx"
    SQLHOST="localhost"
    MYSQL="$(db-name)"
    MYSQLDUMP="$(db-name)"
    GZIP="$(.gz)"
    #
    # Let's just, for sanity's sake, make sure our temp backup folder exists.
    mkdir $BACKUP
    # DON'T EDIT ANYTHING BELOW THIS LINE
    #----------------------------------------------------------------
    # Now let's start!
    # Let's get the databases that we want to backup.
    DBS="$($MYSQL -u $SQLUSER -h $SQLHOST -p$SQLPASS -Bse 'show databases')"
    # Now let's dump them to .sql files and put them in our backup directory.
    for db in $DBS
    do
    FILE=$BACKUP/mysql-$db.$NOW.gz
    $MYSQLDUMP -u $SQLUSER -h $SQLHOST -p$SQLPASS $db | $GZIP -9 > $FILE
    done
    #
    # Let's shove the whole webserver directory into a tarball and throw that in with the sql files:
    tar -zcvf /root/backup/$WEBFILE $WEBDIR
    # That's all done - we should put the backups on Copy by putting them into our Copy folder.
    # First let's make a folder for today.
    mkdir $DROPBOX/$NOW
    # Copy our backups into it.
    cp -R $BACKUP/* $DROPBOX/Asterix/$NOW
    # We can delete the backup we made 3 days ago from Copy now.
    rm -rf $DROPBOX/$DAYSAGO
    # And clear out the temporary director for next time.
    rm $BACKUP/*
    # Job well done!
    # Have a beer and relax!
    

    Here is my problem: When I try to run the script I get this error: ./backup.sh: 66: ./backup.sh: Syntax error: Unterminated quoted string

    If anyone could help me with this would appreciate it a lot!

  • Hamza
    Hamza over 9 years
    Ok I will see if that fixes. Also in the script I also did not know what to put in at: MYSQL="$()" MYSQLDUMP="$()" GZIP="$()" So I just put my DB name in for the first two and .gz in the third one. Is that fine?
  • muru
    muru over 9 years
    @Hamza for MYSQL in the brackets, use the output of which mysql, and which mysqldump for MYSQLDUMP. Similarly for GZIP. e.g.: MYSQL=/usr/bin/mysql.