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