I wrote a bash script that performs a curl call only during business hours. For some reason, the hourly comparison fails when I add an “-a” operator (and for some reason my bash does not recognize “&&”).
Though the script is much larger, here is the relevant piece:
HOUR=`date +%k`
if [ $HOUR > 7 -a $HOUR < 17 ];
then
//do sync
fi
The script gives me the error:
./tracksync: (last line): Cannot open (line number): No such file
However, this comparison does not fail:
if [ $DAY != "SUNDAY" -a $HOUR > 7 ];
then
//do sync
fi
Is my syntax wrong or is this a problem with my bash?
You cannot use
<and>in bash scripts as such. Use-ltand-gtfor that:<and>are used by the shell to perform redirection of stdin or stdout.The comparison that you say is working is actually creating a file named
7in the current directory.As for
&&, that also has a special meaning for the shell and is used for creating an “AND list” of commands.The best documentation for all these:
man bash(andman testfor details on comparison operators)