something is causing this script to break early on

I am relatively new at scripting in linux. Most of my scripting knowledge comes from doing batch scripting in windows.

Anyway, I have this script I'm trying to write that will install a program called Nagios along with a few other packages. I know it has to be something at the beginning that is causing it to break, but I can't figure out what it is.

Here is the script:

#!/bin/bash


apt-get install apache2

apt-get install build-essential

apt-get install libgd2-xpm-dev

apt-get install openssh-server

aptitude install php5 libapache2-mod-php5

/etc/init.d/apache2 restart


/usr/sbin/useradd nagios

passwd nagios

/usr/sbin/groupadd nagcmd

/usr/sbin/usermod -G nagcmd nagios

/usr/sbin/usermod -G nagcmd www-data

mkdir /home/downloads

cd /home/downloads

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz

wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.14.tar.gz

cd /home/downloads

tar xzf nagios-3.2.1.tar.gz

cd nagios-3.2.1/

./configure --with-command-group=nagcmd

make all

make install

make install-init

make install-config

make install-commandmode

vi /usr/local/nagios/etc/objects/contacts.cfg

make install-webconf

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

/etc/init.d/apache2 reload

cd /home/downloads

tar xzf nagios-plugins-1.4.14.tar.gz

cd nagios-plugins-1.4.14/

./configure --with-nagios-user=nagios --with-nagios-group=nagios

make

make install

ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

/etc/init.d/nagios start

I'm not asking someone to rewrite this for me, I'm just trying to find some advice on what I'm doing wrong. Again, I am a newbie at this, so please forgive me if it turns out to be something stupid I'm doing.

You may want to re-run your code with bash "in debug mode", i.e. bash -x script, to get an idea of what fails where and why ...

I ran the script using bash -x and got the following output (note: I stopped the script half way so it didn't run all the way through):

root@john-desktop:/home/john/Downloads# bash -x ubuntu-desktop-server.sh 
+ $'\r'
: command not founder.sh: line 2: 
+ $'\r'
: command not founder.sh: line 3: 
+ apt-get install $'apache2\r'
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Couldn't find package apache2
+ $'\r'
: command not founder.sh: line 5: 
+ apt-get install $'build-essential\r'
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Couldn't find package build-essential
+ $'\r'
: command not founder.sh: line 7: 
+ apt-get install $'libgd2-xpm-dev\r'
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Couldn't find package libgd2-xpm-dev
+ $'\r'
: command not founder.sh: line 9: 
+ apt-get install $'openssh-server\r'
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Couldn't find package openssh-server
+ $'\r'
: command not founder.sh: line 11: 
+ aptitude install php5 $'libapache2-mod-php5\r'
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Reading extended state information      
Initializing package states... Done
"ouldn't find any package whose name or description matched "libapache2-mod-php5
"ouldn't find any package whose name or description matched "libapache2-mod-php5
The following NEW packages will be installed:
  apache2-mpm-prefork{a} apache2-utils{a} apache2.2-bin{a} apache2.2-common{a} 
  libapache2-mod-php5{a} libapr1{a} libaprutil1{a} libaprutil1-dbd-sqlite3{a} 
  libaprutil1-ldap{a} php5 php5-common{a} 
0 packages upgraded, 11 newly installed, 0 to remove and 0 not upgraded.
Need to get 6,700kB of archives. After unpacking 18.9MB will be used.
Do you want to continue? [Y/n/?] ^C
root@john-desktop:/home/john/Downloads# 

The script is riddled with carriage-return characters which are showing up as "\r". This usually comes from editing a script on a Microsoft platform then copying in the script using binary ftp rather than text ftp.
The line terminator in Microsoft text files is "carriage-return linefeed" whereas in unix text files it is just "linefeed". The suplus carriage-return characters are being treated as part of the command - hence the errors.
It is usually easier to re-transfer the file than to fix it, though there are many standard quick fixes depending on what Operating System you have.

Thanks! That was the problem. I edited the format in nano and re-saved it and it did the tricks.

Thanks again! :slight_smile: