user2177712
user2177712

Reputation: 41

Bash: syntax error near unexpected token `else'

I'm getting the following error:

./adduser.sh: line 21: syntax error near unexpected token `else'
./adduser.sh: line 21: `        else'

I have been stuck here for an hour and I just can not figure it out.

#!/bin/bash
#==========================================================================================================================================
# Script Name:  adduser.sh
# By:           Tim mayo
# Date:         3/2013
# Purpose:      Add a user to the Linux system
# Command line: adduser.sh
#
#==========================================================================================================================================
        read -p "Enter username : " username
        read -s -p "Enter password : " password
        egrep "^$username" /etc/passwd >/dev/null
        if [ $? -eq 0 ]; then
                echo "$username exists!"
                exit 1
        else
                pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
                useradd -m -p $pass $username
                [ $? -eq 0 ] && echo "User has been added to system!" || echo "Failed to add a user!"
        fi
                else
                        echo "Root user can only add a user to the Linux system"
                        exit 2
fi

Upvotes: 0

Views: 3282

Answers (2)

Bilzard
Bilzard

Reputation: 371

Another 'run as root only' example:

   #!/bin/bash


if [ $UID -eq "0" ]
then
        read -p "Enter username : " username
        read -s -p "Enter password : " password
        egrep "^$username" /etc/passwd >/dev/null
        if [ $? -eq 0 ]; then
                echo "$username exists!"
                exit 1
        else
                pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
                useradd -m -p $pass $username
                [ $? -eq 0 ] && echo "User has been added to system!" || echo "Failed to add a user!"
        fi
                 else
                        echo "Root user can only add a user to the Linux system"
                        exit 2
fi

Upvotes: 0

chepner
chepner

Reputation: 531065

The else keyword isn't associated with any if statement; you ended the if statement with the fi keyword on line 20. Perhaps you are missing an if just before the two read statements?

Upvotes: 2

Related Questions