Thank you..... That worked ! if [[ $NOWDATE -ne $FILEDATE ]]; then if [[ $CMD_RET =~ ", 0% packet loss" ]] On 11/12/2013 12:39 PM, canito at dalan.us wrote: > Script output: > > -bash-4.1$ ./test.sh > + '[' -f /tmp/test/ping_check.txt ']' > + FILEDATE=0 > + echo 0 > > + [[ '' -ne 0 ]] > > > > Script: > > -bash-4.1$ cat test.sh > #!/bin/bash > > set -x > > if [ -f /tmp/test/ping_check.txt ]; > then > FILEDATE=`cat /tmp/test/ping_check.txt` > else > FILEDATE=0 > fi > > echo $FILEDATE > > > if [[ $NOWDATE -ne $FILEDATE ]]; then > if [[ $CMD_RET =~ ", 0% packet loss" ]] > then > echo "$HOST pinged ..." > echo $NOWDATE > /tmp/test/ping_check.txt > # run backup script > /tmp/test/backup-host-1 > > else > echo "$HOST did not ping ..." > fi > fi > > > You need double quotes to get rid of that error, as far as my test > results show. > > SDA > > Quoting canito at dalan.us: > >> When writing bash I make sure to standardize when validating. >> >> I don't use double square brackets [[ unless using special validators >> that require this. >> >> I would recommend that you use the double brackets throughout your >> script. >> >> Also, when validating I take the extra step and use the following for >> example: >> >> if ${variable} -eq 0 ]; then >> >> Using the {} around the variable has a special meaning making use >> that only the value is expanded, and it works great. >> >> When troubleshooting scripts I comment our every block making sure >> the results are what I want. Then, I am able to move forth. >> >> Hope this helps. >> >> Saul David Alanis >> >> Quoting Raymond Norton <admin at lctn.org>: >> >>> Bash: >>> >>> #!/bin/bash -x >>> >>> >>> >>> >>> On 11/12/2013 10:50 AM, Jake Vath wrote: >>>> Are you trying to run this as a Bash script with /#!/bin/bash/ (or >>>> some from of Bash)? >>>> or are you trying to run this as a Bourne shell with /#!/bin/sh/ >>>> (or some form of Borne)? >>>> >>>> -> Jake >>>> >>>> >>>> On Tue, Nov 12, 2013 at 9:01 AM, Raymond Norton <admin at lctn.org >>>> <mailto:admin at lctn.org>> wrote: >>>> >>>> I run the following script to test if a host is on-line and >>>> trigger a back up if it's alive. Something apparently changed with >>>> the script and it is giving me a "unary operator expected" error >>>> for line 17. >>>> >>>> Any ideas what is triggering it? >>>> >>>> >>>> >>>> if [ -f /etc/bacula/ping_check.txt ]; >>>> then >>>> FILEDATE=`cat /etc/bacula/ping_check.txt` >>>> else >>>> FILEDATE=0 >>>> fi >>>> >>>> if [ $NOWDATE -ne $FILEDATE ]; >>>> then >>>> if [[ $CMD_RET =~ ", 0% packet loss" ]] >>>> then >>>> echo "$HOST pinged ..." >>>> echo $NOWDATE > /etc/bacula/ping_check.txt >>>> # run backup script >>>> /etc/bacula/backup-host-1 >>>> >>>> else >>>> echo "$HOST did not ping ..." >>>> fi >>>> fi >>>> >>>> exit >>>> >>>> -- Raymond Norton >>>> LCTN >>>> 952.955.7766 <tel:952.955.7766> >>>> >>>> Sent from My Desktop >>>> >>>> _______________________________________________ >>>> TCLUG Mailing List - Minneapolis/St. Paul, Minnesota >>>> tclug-list at mn-linux.org <mailto:tclug-list at mn-linux.org> >>>> http://mailman.mn-linux.org/mailman/listinfo/tclug-list >>>> >>>> >>>> >>>> -- >>>> This message has been scanned for viruses and >>>> dangerous content by *MailScanner* <http://www.mailscanner.info/>, >>>> and is >>>> believed to be clean. >>>> >>>> >>>> _______________________________________________ >>>> TCLUG Mailing List - Minneapolis/St. Paul, Minnesota >>>> tclug-list at mn-linux.org >>>> http://mailman.mn-linux.org/mailman/listinfo/tclug-list >>> >>> -- >>> Raymond Norton >>> LCTN >>> 952.955.7766 >>> >>> Sent from My Desktop >> >> >> >> _______________________________________________ >> TCLUG Mailing List - Minneapolis/St. Paul, Minnesota >> tclug-list at mn-linux.org >> http://mailman.mn-linux.org/mailman/listinfo/tclug-list > > > > _______________________________________________ > TCLUG Mailing List - Minneapolis/St. Paul, Minnesota > tclug-list at mn-linux.org > http://mailman.mn-linux.org/mailman/listinfo/tclug-list > -- Raymond Norton LCTN 952.955.7766 Sent from My Desktop