Unexpected end of file, why?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Unexpected end of file, why?
# 1  
Old 10-19-2009
Unexpected end of file, why?

I am getting a "line 47: syntax error: unexpected end of file", why? According to my estimate, line 47 is 2 lines after the last line of code here. Also, the $1 variable represents the current user logging in, and the script runs with root privileges (This is a Mac OS login hook script using BASH).

Code:
#!/bin/bash

# Script to Create a userChrome.css, lock down network prefs, and remove /Applications/iTunes.app
# Defining Variables, DIR2 is the User's home directory path on server, DIR is the User's Firefox Profile Name

DIR2=`dscacheutil -q User |grep ${1} |grep dir |awk '{print $2}'`
DIR=`ls ${DIR2}/Library/Application\ Support/Firefox/Profiles |grep default`
MANAGERS='dixonb,oconnorw,abbaziam,freym,rosik,cicciag,brownd,localadmin,leventhalg,effiongw,heeseb'

# Do not run script if the user logging in is an admin (Manager or MIS user, see list above)

echo $MANAGERS |grep -q ${1}

if [ $? -eq 0 ]; then
exit
else
echo ""
 
 # Check for userchrome file to remove Firefox network settings button and lock down preferences for user

if [  -e ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css ]; then
echo ""
else 
cd ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome ; touch ./userChrome.css
fi

echo "@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to XUL */" > ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
echo "#BrowserPreferences #connectionSettings {display: none !important;}" >> ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
echo "#BrowserPreferences #connectionGroup {display: none !important;}" >> ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css

# Set permissions so user cannot change or delete userchrome.

#chown admin ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
#chown admin ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome
#chmod 1755 ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css

cat ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js |grep 192.168.171.4 || printf "%s\n" 'user_pref("network.proxy.http", "192.168.171.4");' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.http_port", 8080);' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.no_proxies_on", "localhost, 127.0.0.1, conair.com, conair.lan,");' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.type", 1);' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js

# Remove iTunes if it exists in /Applications

if [ -e /Applications/iTunes.app ]; then
rm -rf /Applications/iTunes.app
else
echo ""
fi



---------- Post updated at 10:40 AM ---------- Previous update was at 10:38 AM ----------

This is a login hook which means it runs when a user logs in, runs with root privileges, and the $1 variable represents the current user who is logging in. Mac OS X
# 2  
Old 10-19-2009
[quote=glev2005;302363081]I am getting a "line 47: syntax error: unexpected end of file", why?

Code:
#!/bin/bash

# Script to Create a userChrome.css, lock down network prefs, and remove /Applications/iTunes.app
# Defining Variables, DIR2 is the User's home directory path on server, DIR is the User's Firefox Profile Name

DIR2=`dscacheutil -q User |grep ${1} |grep dir |awk '{print $2}'`
DIR=`ls ${DIR2}/Library/Application\ Support/Firefox/Profiles |grep default`
MANAGERS='dixonb,oconnorw,abbaziam,freym,rosik,cicciag,brownd,localadmin,leventhalg,effiongw,heeseb'

# Do not run script if the user logging in is an admin (Manager or MIS user, see list above)

echo $MANAGERS |grep -q ${1}

if [ $? -eq 0 ]; then
exit
else
echo ""
  ????? where is the fi clause


 # Check for userchrome file to remove Firefox network settings button and lock down preferences for user

if [  -e ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css ]; then
echo ""
else 
cd ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome ; touch ./userChrome.css
fi

echo "@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to XUL */" > ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
echo "#BrowserPreferences #connectionSettings {display: none !important;}" >> ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
echo "#BrowserPreferences #connectionGroup {display: none !important;}" >> ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css

# Set permissions so user cannot change or delete userchrome.

#chown admin ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
#chown admin ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome
#chmod 1755 ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css

cat ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js |grep 192.168.171.4 || printf "%s\n" 'user_pref("network.proxy.http", "192.168.171.4");' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.http_port", 8080);' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.no_proxies_on", "localhost, 127.0.0.1, conair.com, conair.lan,");' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.type", 1);' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js

# Remove iTunes if it exists in /Applications

if [ -e /Applications/iTunes.app ]; then
rm -rf /Applications/iTunes.app
else
echo ""
fi


# 3  
Old 10-19-2009
I'm sorry I wish it were that easy, but I must have accidentally erased the fi when I copied it up to UNIX.com Here is the actual script copied again complete.

Code:
#!/bin/bash

# Script to Create a userChrome.css, lock down network prefs, and remove /Applications/iTunes.app
# Defining Variables, DIR2 is the User's home directory path on server, DIR is the User's Firefox Profile Name

DIR2=`dscacheutil -q User |grep ${1} |grep dir |awk '{print $2}'`
DIR=`ls ${DIR2}/Library/Application\ Support/Firefox/Profiles |grep default`
MANAGERS='dixonb,oconnorw,abbaziam,freym,rosik,cicciag,brownd,localadmin,leventhalg,effiongw,heeseb'

# Do not run script if the user logging in is an admin (Manager or MIS user, see list above)

echo $MANAGERS |grep -q ${1}

if [ $? -eq 0 ]; then
exit
else
echo ""
fi
 # Check for userchrome file to remove Firefox network settings button and lock down preferences for user

if [  -e ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css ]; then
echo ""
else 
cd ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome ; touch ./userChrome.css
fi

echo "@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to XUL */" > ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
echo "#BrowserPreferences #connectionSettings {display: none !important;}" >> ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
echo "#BrowserPreferences #connectionGroup {display: none !important;}" >> ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css

# Set permissions so user cannot change or delete userchrome.

#chown admin ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
#chown admin ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome
#chmod 1755 ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css

cat ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js |grep 192.168.171.4 || printf "%s\n" 'user_pref("network.proxy.http", "192.168.171.4");' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.http_port", 8080);' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.no_proxies_on", "localhost, 127.0.0.1, conair.com, conair.lan,");' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.type", 1);' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js

# Remove iTunes if it exists in /Applications

if [ -e /Applications/iTunes.app ]; then
rm -rf /Applications/iTunes.app
else
echo ""
fi

# 4  
Old 10-20-2009
Tools Re: unexpected end of file

Hi, when I've had similar messages on a Linux system it's usually because I've forgotten to exit the code correctly. I notice that you have on line 10 ( skipping blank lines ) you have "exit" but don't give an exit code, try:

exit 0

also I can't find any other exit command which means your code runs reaches the end it doesn't exit so the shell unexpectedly gets to the end of the file. Try adding exit 0 after the last line. So your complete code would look like this:

Code:
#!/bin/bash

# Script to Create a userChrome.css, lock down network prefs, and remove /Applications/iTunes.app
# Defining Variables, DIR2 is the User's home directory path on server, DIR is the User's Firefox Profile Name

DIR2=`dscacheutil -q User |grep ${1} |grep dir |awk '{print $2}'`
DIR=`ls ${DIR2}/Library/Application\ Support/Firefox/Profiles |grep default`
MANAGERS='dixonb,oconnorw,abbaziam,freym,rosik,cicciag,brownd,localadmin,leventhalg,effiongw,heeseb'

# Do not run script if the user logging in is an admin (Manager or MIS user, see list above)

echo $MANAGERS |grep -q ${1}

if [ $? -eq 0 ]; then
exit 0
else
echo ""
fi
 # Check for userchrome file to remove Firefox network settings button and lock down preferences for user

if [  -e ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css ]; then
echo ""
else 
cd ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome ; touch ./userChrome.css
fi

echo "@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to XUL */" > ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
echo "#BrowserPreferences #connectionSettings {display: none !important;}" >> ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
echo "#BrowserPreferences #connectionGroup {display: none !important;}" >> ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css

# Set permissions so user cannot change or delete userchrome.

#chown admin ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css
#chown admin ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome
#chmod 1755 ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/chrome/userChrome.css

cat ${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js |grep 192.168.171.4 || printf "%s\n" 'user_pref("network.proxy.http", "192.168.171.4");' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.http_port", 8080);' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.no_proxies_on", "localhost, 127.0.0.1, conair.com, conair.lan,");' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js;printf "%s\n" 'user_pref("network.proxy.type", 1);' >>${DIR2}/Library/Application\ Support/Firefox/Profiles/${DIR}/prefs.js

# Remove iTunes if it exists in /Applications

if [ -e /Applications/iTunes.app ]; then
rm -rf /Applications/iTunes.app
else
echo ""
fi
exit 0

Hope this helps.
# 5  
Old 10-20-2009
Have you edit the file in or another platform (windows)?
# 6  
Old 10-20-2009
I edited the file using textwrangler on my Mac, so no, it has only been OS X. I did think about that though, that perhaps the editor put a special character somewhere, but this app is supposed to be used for this type of stuff, so I would hope it doesnt do that. jkdwiz, I will try your idea.

---------- Post updated at 10:25 AM ---------- Previous update was at 10:22 AM ----------

I will see if that works next time they log in.. Also if anyone has any suggestions for cleaning u my code, I would love to improve my BASH.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

unexpected end of file

I dont know where I missed the double quotes .:wall:pls review this code and help me out . m1: line 26: unexpected EOF while looking for matching `"' m1: line 34: syntax error: unexpected end of file echo "script is created by prabhu Kumar "; echo "changing the directory to wes... (2 Replies)
Discussion started by: ptappeta
2 Replies

2. Shell Programming and Scripting

Unexpected End Of File Error

Hi guys, I am new to BASH scripting and I was wondering if anyone could have a look at this code and explain to me why I am getting an Unexpected End of File Error ? If you can that would be great / much appreciated! THANKS! #!/bin/bash USER="" PASS="" if ; then echo "You need to set... (1 Reply)
Discussion started by: spooke
1 Replies

3. Shell Programming and Scripting

Unexpected end of file error

Hi , I am new to Unix and this is my first shell script . I am facing "unexpected end of file error" while executing my code . tried removing blank spaces Unable to trace out the error . PLease help !!! #!/bin/sh echo hello if ] echo hi then var=`cat liq_table_nm.txt` ... (6 Replies)
Discussion started by: sen180185
6 Replies

4. Shell Programming and Scripting

Unexpected end of file

Hi, On adding below code to my script shows the error on executing else script works fine. sqlplus $user_name/$password <<EOL truncate table order; commit; truncate table order_hist; commit; insert into order(ID,TRAN,CUST_NAME,OPT_VAL) select * from order_bkp; insert into... (5 Replies)
Discussion started by: milink
5 Replies

5. Shell Programming and Scripting

unexpected end of file error

hi, i am trying to connect to sqlplus in an 'if block' from the script. it is giving unexpected end of file error. and it works fine if it is out of 'if block'. if anybody have idea on this, can you please help me to solve the error ? piece of code is given below. if then... (11 Replies)
Discussion started by: vinayakatj56
11 Replies

6. Shell Programming and Scripting

'end of file' unexpected

HELP PLEASE!! I am running this script, and i keep getting the error 'end of file' unexpected. I know that usually means parenthesis or whatever is out of place but i cant find anything!! I am new to scripting and i put some "print" staements in and it is not getting past the first IF statment... (7 Replies)
Discussion started by: weatherman0516
7 Replies

7. Shell Programming and Scripting

'end of file' unexpected

HI, I was converting a .bat file to .sh file for unix Code snippet #!/usr/bin/sh set -x if then goto RegularBuild; CURDIR="$1"; cd "$CURDIR"; :RegularBuild echo "Checking for existing fip_help.properties in def/properties directory..." if then rm -f fip_help.properties; ... (1 Reply)
Discussion started by: srisreeku
1 Replies

8. Shell Programming and Scripting

end of file unexpected

hi i have error like this' syntax error end of file unexecpeted.and give me the example of cut command as soon as possible: (1 Reply)
Discussion started by: naveeng.81
1 Replies

9. Shell Programming and Scripting

unexpected end of file

This is the script path=/oracle/ora10gdb/sample archive=/oracle/ora10gdb/archive cd $path for i in `ls`;do mv $i $archive Done Please tell me why it is givind this error (2 Replies)
Discussion started by: dineshr85
2 Replies

10. Shell Programming and Scripting

'end of file' unexpected

what do u mean by " 'end of file' unexpected "? i am running a script called "s1" which internally calls "s2" now s1 starts running & at a point (where it is suppose to call "s2") i get a message 'end of file' unexpected.... & my script(s) are not working.. any ideas on this? regards... (4 Replies)
Discussion started by: abhijeetkul
4 Replies
Login or Register to Ask a Question

Featured Tech Videos