shell script problems

The place to post if you need help or advice

Moderators: ChrisThornett, LXF moderators

shell script problems

Postby Guest » Sun Apr 24, 2005 9:37 am

I have a shell script that runs automatically following a 'hotplug' event.
Leaving the hotplug to do its thing results in a 'bad interpereter' error. If I try to run the script just using the path ie
/etc/hotplug/usb/synce
it gives me the same error.
However using the bash command then it works ok. This makes me assume that the error is due to the system not understanding the script is a bash script

The thing is that there are other scripts in that directory, doing the same job but for differnt equipment, that do not need the bash command to run.

What do I need to do to get the script to run impliclty as a bash script rather than being explicit with the bash statement.


Any help would be great

Chris
Guest
 

RE: shell script problems

Postby nelz » Sun Apr 24, 2005 10:22 am

Itnsounds like you are missing the shebang line from the start of the script, although that can't be more than a guess because you have given no information about the script itself. The script should start with

Code: Select all
#!/bin/bash
"Insanity: doing the same thing over and over again and expecting different results." (Albert Einstein)
User avatar
nelz
Site admin
 
Posts: 8550
Joined: Mon Apr 04, 2005 11:52 am
Location: Warrington, UK

RE: shell script problems

Postby Guest » Sun Apr 24, 2005 11:18 am

No, the start line is in there.
I've compared the script with one of the ones that does run and I cant see any differences in them.
The problem seems to be the way that the hotplug event is handled and the call for the device script is made.
If I look at my logs I get this information

Apr 24 11:53:36 marvin kernel: usb 1-2: Product: PocketPC SmartPhone
Apr 24 11:53:36 marvin kernel: usb 1-2: Manufacturer: Intel.
Apr 24 11:53:36 marvin kernel: usbserial 1-2:1.0: PocketPC PDA converter detected
Apr 24 11:53:36 marvin kernel: usb 1-2: PocketPC PDA converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
Apr 24 11:53:36 marvin /etc/hotplug/usb.agent[7106]: need a device for this command
Apr 24 11:53:36 marvin /etc/hotplug/tty.agent[7108]: add tty device /class/tty/ttyUSB0
Apr 24 11:53:42 marvin /etc/hotplug/usb.agent[7106]: /etc/hotplug/usb.agent: /etc/hotplug/usb/synce: /bin/bash^M: bad interpreter: No such file or directory

The script itself is
#!/bin/bash

export time=`date +"%b %d %X"`
export uname=`uname -n`

echo "$time $uname $0: iPAQ added" >> /var/log/synce
synce-serial-abort >> /dev/null
synce-serial-start >> /var/log/synce

:> $REMOVER
echo "export time=\`date +\"%b %d %X\"\`" >> $REMOVER
echo "export uname=\`uname -n\`" >> $REMOVER
echo "echo \"\$time \$uname $0: iPAQ removed\" >> /var/log/synce" >> $REMOVER
chmod +x $REMOVER

and its path is /etc/hotplug/usb/synce

If I type the command /etc/hotplug/usb/synce then it doesnt run. If I type
bash /etc/hotplug/usb/synce then it will.
There are other almost identical scripts in the same directory that will run without the bash command
Guest
 

RE: shell script problems

Postby fingers99 » Sun Apr 24, 2005 12:40 pm

that
^M: bad interpreter
looks to me like a DOS end of line character. I'd take a look at it in vim and see if editing that out makes a difference.
fingers99
LXF regular
 
Posts: 143
Joined: Thu Apr 07, 2005 6:15 pm

RE: shell script problems

Postby Guest » Sun Apr 24, 2005 1:00 pm

that looks as if you hit the nail on the head

Thanks very much for your help
Guest
 

RE: shell script problems

Postby Guest » Tue May 17, 2005 5:58 pm

Did you use chmod to make the script executable?
Guest
 


Return to Help!

Who is online

Users browsing this forum: No registered users and 1 guest