Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 21 Jun 2012 14:12:03 -0500
From:      CyberLeo Kitsana <cyberleo@cyberleo.net>
To:        Odhiambo Washington <odhiambo@gmail.com>
Cc:        questions <questions@freebsd.org>
Subject:   Re: A bash scripting question
Message-ID:  <4FE37203.3020404@cyberleo.net>
In-Reply-To: <CAAdA2WPJkAY7pHau6TCHSLN1faEWS9ZMU1Jq=64YrtmKyLBQpQ@mail.gmail.com>
References:  <CA%2BC6gOgi2kfEpR07Dk0F%2BfbAiJKbDE5NBh9ZrXbkzOB9GrFD5w@mail.gmail.com> <CAAdA2WNnJc%2BWc3guqgPZaTVXneYFvzaAj=z_O-Jzcp45vSZi_Q@mail.gmail.com> <CA%2BC6gOj60PM0WGR9jRdcj0erSNrAzXLQw_gBiyuBQu3nhgiQTg@mail.gmail.com> <CAAdA2WM0KM1yZPZUpON=stc-mLs8zYiPXaP5=EU642UKT0CQOg@mail.gmail.com> <CA%2BC6gOhd4Mk8CkMkODRLvSQThOCx49JSVm4=ihcqFVV1U7C2ig@mail.gmail.com> <CAEobancjDn1TYCETQVw0jAPP2OjVBZX=DUeLEN612nW=WCuqqA@mail.gmail.com> <CAEobane5k%2BdtoWF_cxxZjJQdT4PBfN_44PK=xQgZUvM_9nz77g@mail.gmail.com> <CA%2BC6gOgErgcYWzo=YqpoywscoQQ94zG8OPsJHN6TjtyvMnwXtg@mail.gmail.com> <CAAdA2WO5w_=-OfJQfM803%2BLM%2BGgd5zPmtcYVHCWo-GShAxvQbA@mail.gmail.com> <CA%2BC6gOh25C8mNNjMrVJzWQnnSzYK2p6h6Sh_=k7qHSMzgQ4Vow@mail.gmail.com> <CAAdA2WO88wboMKKMDsL2TYOG9vfk=WfGbx=xA=suySc_qpgnCQ@mail.gmail.com> <CA%2BC6gOgmMJp_OWEOSm=4GFR%2BCDiT6eduEmwSx8u2oogVPCZRww@mail.gmail.com> <CA%2BC6gOioF_wYRXWQWeLUF3FPXj8dP82DAjNh353%2Bp0OpHHcB0Q@mail.gmail.com> <CAAdA2WPJkAY7pHau6TCHSLN1faEWS9ZMU1Jq=64YrtmKyLBQpQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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@CyberLeo.Net>

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4FE37203.3020404>