?
Solved

Find EOM in Unix crontab

Posted on 2014-10-31
15
Medium Priority
?
416 Views
Last Modified: 2014-11-07
I have a command to run a script in crontab but it doesn't work.  This is the command   test `echo \`cal\`|awk '{print $NF}'` -eq `date +\%d`.  What is wrong with it?
0
Comment
Question by:OCCU
  • 8
  • 4
  • 3
15 Comments
 
LVL 68

Accepted Solution

by:
woolmilkporc earned 1500 total points
ID: 40416643
Backslashes (\) must be escaped (\\) under cron because it eats up the first one:

test `echo \\`cal\\`|awk '{print $NF}'` -eq `date +\%d` &&  <run the script>

The backslash before % is also consumed by cron, so that the percent sign is passed to "date" instead of being interpreted as start of stdin. It must thus not be escaped!

Better use the "$( ... )" notation instead of backticks. No escaping is required then:

test $(echo $(cal) |awk '{print $NF}') -eq $(date +\%d) && <run the script>

You could also replace "test" with "[ ... ]":

[ $(echo $(cal) |awk '{print $NF}') -eq $(date +\%d) ] && <run the script>

All of the above worked for me under AIX.


wmp
0
 

Author Comment

by:OCCU
ID: 40416647
If it returns a true it will run script.  This script does work.
0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 40416653
Did you try my suggestions?
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 

Author Comment

by:OCCU
ID: 40416660
I will try it tonight and let you know.
0
 
LVL 38

Expert Comment

by:Gerwin Jansen, EE MVE
ID: 40416665
This part:

echo \`cal\`

is not executing the cal command, it is merely echoing the string cal - this is why your command in your script is not working.
0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 40416666
If you're on Linux (or have GNU date installed on Unix) you could also use its features instead of "cal":

test $(date -d "-1 days +1 month" "+\%d") -eq $(date "+\%d")  && <run the script>
0
 

Author Comment

by:OCCU
ID: 40416669
If I remove the echo would it work?
0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 40416670
Gerwin - please note that it's nested backticks!

So e. g.

echo `echo \`cal\``

works on command line, but not under cron. The inner backticks must be escaped twice there.
0
 
LVL 38

Expert Comment

by:Gerwin Jansen, EE MVE
ID: 40416673
Only change you need to make is getting the cal command to run:

test `echo $(cal) | awk '{print $NF}'` -eq `date +%d`

Open in new window

^^^ this is working and is returning a $? of 0 (so true).
0
 
LVL 38

Expert Comment

by:Gerwin Jansen, EE MVE
ID: 40416674
@wmp - I know - I never nest backticks :D
0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 40416675
>> If I remove the echo would it work?   <<

No, because you'll get multi line output then.

This will work:

cal | tail -1 |awk '{print $NF}'
0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 40416677
Gerwin - I don't even use backticks if at all possible!
0
 

Author Comment

by:OCCU
ID: 40422169
I was able to get my script to run by using [ $(echo $(cal) |awk '{print $NF}') -eq $(date +\%d) ] &&.

Thanks for your help
0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 40422176
You're always welcome. Glad I could help!

wmp
0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 40429080
Please, what are your reasons for giving grade B?
You wrote above that you followed exactly my suggestion!

Please read here about awarding grades.

Quote:
B is the grade given for acceptable solutions, or a link to an acceptable solution. A B grade means the solution given lacked some information or required you to do a good amount of extra work to resolve the problem. When closing the question, the asker should explain why a B grade was awarded.
Should you want to review your decision click "Request Attention" above and explain your demand.

wmp
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When you discover the power of the R programming language, you are going to wonder how you ever lived without it! Learn why the language merits a place in your programming arsenal.
Today as you open your Outlook, you witness an error message: “Outlook is using an old copy of your Outlook Data File…”. Probably, Outlook is accessing an old OST file.
An overview on how to enroll an hourly employee into the employee database and how to give them access into the clock in terminal.
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…
Suggested Courses

578 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question