Я сократил ваш сценарий до этого:
#! /bin/tcsh
if ( -n "`find ./monme -newer ./cache`" ) then
echo hello
endif
Это дает ту же ошибку. Я думаю, что виновником является
-n "`find ./monme -newer ./cache`"
Что должен делать -n
? Я думаю, что он хочет номер, но получает что-то еще ...
Обновление : -n в bash означает «длина строки не равна нулю». В моей версии tcsh его так же легко заменить, как использовать == "", например:
if (( ! -f "./cache" ) || ("`find ./monme -newer ./cache`" != ""))
then
touch cache -t "$now"
echo "new files added" | mail -s "new build" myemail@myserver.com
endif
Попробуйте и посмотрите, работает ли он.