A bash scripting question

CyberLeo Kitsana cyberleo at cyberleo.net
Thu Jun 21 19:12:11 UTC 2012


On 06/21/2012 08:40 AM, Odhiambo Washington wrote:
> How Can I simplify/perfect the following script, so that I read _ALL_ the
> lines in the file and act on the content as shown below, so that I do not
> have to specifiy an action per line?
> 
> This below is doing exactly what i need BUT reading one line at a time
> untill the 10th line, if i want more i add manually...
> This might help some1 someday! But if there is a way to perfect it please
> do so.....
> 
> #!/usr/local/bin/bash
> 
> smsfile=email_to_sms
> `grep Subject /var/spool/mail/sms >>$smsfile`
> if [[ -s $smsfile ]] ; then
> cat /dev/null > /var/spool/mail/sms
> sed -i 's/Subject: //g' $smsfile
> echo `sed -n '1p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==1
> {print $1}' $smsfile`
> echo `sed -n '2p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==2
> {print $1}' $smsfile`
> echo `sed -n '3p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==3
> {print $1}' $smsfile`
> echo `sed -n '4p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==4
> {print $1}' $smsfile`
> echo `sed -n '5p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==5
> {print $1}' $smsfile`
> echo `sed -n '6p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==6
> {print $1}' $smsfile`
> echo `sed -n '7p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==7
> {print $1}' $smsfile`
> echo `sed -n '8p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==8
> {print $1}' $smsfile`
> echo `sed -n '9p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==9
> {print $1}' $smsfile`
> echo `sed -n '10p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==10
> {print $1}' $smsfile`
> else
> echo "***********Sorry the SMS FILE "$smsfile" is empty.************"
> fi
> gammu-smsd start
> cat email_to_sms >> email_to_sms2
> cat /dev/null > email_to_sms

Off the top of my head:

----8<----
#!/bin/sh -e

sed -e '/^Subject: /!d; s/^Subject: //' /var/spool/mail/sms > "${smsfile}"

:>/var/spool/mail/sms

xargs -L1 /usr/bin/gammu --sendsms TEXT < "${smsfile}"

mv -f "${smsfile}" "${smsfile}.bak"
----8<----

No loops necessary.

By the way, what's gammu, and why is it in /usr/bin ?

-- 
Fuzzy love,
-CyberLeo
Technical Administrator
CyberLeo.Net Webhosting
http://www.CyberLeo.Net
<CyberLeo at CyberLeo.Net>

Furry Peace! - http://wwww.fur.com/peace/


More information about the freebsd-questions mailing list