开发者

Whats wrong with this C shell script?

I am trying to write a C shell equivalent script for the bash script mentioned here.

This is what I have :

#! /bin/tcsh

set now=`date +%Y%m%d%H%M.%S`
if (( ! -f "./cache" ) || (-n  "`find ./monme -newer ./cache`" ))
then
    touch cache -t "$now"
    echo "new files added" | mail -s "new build" myemail@myserver.com
endif

and this is the error I get

$ ./scr
if: Badly formed number.
$

This page mentions that "Numbers in the C-shell must be integers", so I tried

set now=`date +%Y%m%d%H%M`
开发者_JS百科

but I get the same error still.


I cut down your script to this:

#! /bin/tcsh

if ( -n  "`find ./monme -newer ./cache`" ) then
    echo hello
endif

This gives the same error. I think the culprit is

-n  "`find ./monme -newer ./cache`"

What is -n supposed to do? I think it wants a number, but gets something else...

Update: -n in bash means "length of string is non-zero". In my version of tcsh it is as easy to replace as to use == "" like this:

if (( ! -f "./cache" ) || ("`find ./monme -newer ./cache`" != ""))
then
    touch cache -t "$now"
    echo "new files added" | mail -s "new build" myemail@myserver.com
endif

Try that and see if it works.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜