0
#!/bin/bash
#
#Lisa You
#
#12/1/2020
#
#Purpose of the script: The user can use the script to copy, read, rename, and delete files.
#

#Use of while loop to continue task until the user answers NO to continue the script
CHOICE=YES
while (($CHOICE = “YES”))

do
#Prompting the user to choose an option
    PS3="Choose an option from the list above to complete a task: "; export PS3
    select OPTION in COPY READ RENAME DELETE HELP EXIT
    
do
#Copy menu
        if [ $OPTION = "COPY" ]; then
        read -p "Enter an existing file name: " FILE
            #validating file
if [ -f "$FILE" ]; then
                continue
            else
                echo “The $FILE is not a file” 
                break;
            fi
    
        read -p "Enter the destination location: " DEST
            #validating directory
            if [ -d "$DEST" ]; then
                continue;
            else
                echo "The $DEST is not a directory name."
                break;
            fi  
        #checking if file already exists
        if ! [[ -f $DEST/$FILE ]];
        then    
            cp "$FILE" "$DEST"  
            echo "--------------------------------------------------------------------------------"
            echo "The task is completed successfully!"
            echo "Error Code: $?"
        else
            echo "$FILE file already exists at this location $DEST” 
            read -p "Do you want to overwrite the existing file? YES or NO " OPT
                if [[ $OPT == "YES" ]]

                then    
                    cp "$FILE" "$DEST"
                    echo "The task is completed successfully!"
                    echo "Error Code: $?"
                else
                echo "--------------------------------------------------------------------------------"
                echo "The task has failed.!"
                echo "Error Code: $?"
                break
                fi
        fi
#Read menu 
        if [ $OPTION = "READ" ]; then
        #validating file
        read -p "Enter an existing file name: " FILE
            if [ -f "$FILE" ]; then
                cat $FILE
                echo "Error Code: $?"
            else
                echo “The $FILE is not a file” 
echo "Error Code: $?"
                break;
            fi
        fi
#Rename menu
        if [ $OPTION = "RENAME" ]; then
        read -p "Which file do you want to rename? Type an existing file name: " FILE
        #validating file
        if [ -f "$FILE" ]; then
            #Prompt for new file name
            read -p "Type new file name with an absolute path. " NEWFILE
            #Rename file
            mv “$FILE” “$NEWFILE”
            echo "--------------------------------------------------------------------------------"
            echo "The task is completed successfully!"
            echo "Error Code: $?"
            echo "--------------------------------------------------------------------------------"
            echo "The $FILE file is renamed to $NEWFILE."
            echo "--------------------------------------------------------------------------------"

        else
            echo "The $FILE is not a file"
            echo "Error Code: $?"
            break;
        fi
#Delete menu
        if [ $OPTION = "DELETE" ]; then
        read -p "Which file do you want to delete? Type an existing file name: " FILE
            #validate file
            if [ -f "$FILE" ]; then
            #Ask for confirmation
            read -p “Do you want to delete $FILE file? YES or NO” OPT
                if [[ $OPT == "YES" ]]
                then 
                    #delete file
                    rm -f $FILE
                else
                    echo "The $FILE is not a file"
                    break;
                fi
            fi
        fi
        
#Help menu
        if [ $OPTION = "HELP" ]; then
        #List what menus do
        echo "o Copy: copy a file. FIle to copy, Destinated directory"
        echo "o Read: output the contents of a provided file. File to read"
        echo "o Rename: rename a file. File to rename, New file name"
        echo "o Delete: delete a file. File to delete"
        echo "o Help: output a list of supported commands, their actions, and required parameters."
        echo "o Exit: exit the script. "
        break
        fi
        
#Exit menu
        if [ $OPTION = "EXIT" ]; then
        exit 0
        fi
    done

echo "--------------------------------------------------------------------------------"
read -p "Do you want to keep running this script?  YES or NO  " CHOICE

done

This is my code and I am getting the following errors:

1748048961/source.sh: line 133: unexpected EOF while looking for matching `"'
1748048961/source.sh: line 138: syntax error: unexpected end of file

I am really not sure why I am getting the error I have been through the code so many times. :(

2
  • 2
    ShellCheck will show you the errors in your script. The missing double quote character is from line 42 - there's a curved double quote character instead of the standard straight double quote.
    – Haxiel
    Commented Dec 1, 2020 at 17:08
  • OMG" thank you so much you're a life savior!! This website is so helpful!
    – Lisa You
    Commented Dec 1, 2020 at 17:29

1 Answer 1

0

I noticed lots of "garbage" characters: instead of quotes, there are other chars in lines 12, 17, 47, 70, 83 and 98.

Put == instead of = in while (($CHOICE = "YES"))

There is also a missing fi for if [ $OPTION = "COPY" ]; then

1
  • Thank you!:) I have got them fixed.
    – Lisa You
    Commented Dec 5, 2020 at 17:40

Not the answer you're looking for? Browse other questions tagged .