2

我正在尝试为此处提到的 bash 脚本编写一个 C shell 等效脚本。

这就是我所拥有的:

#! /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

这是我得到的错误

$ ./scr
if: Badly formed number.
$

这个页面提到“C-shell中的数字必须是整数”,所以我尝试了

set now=`date +%Y%m%d%H%M`

但我仍然得到同样的错误。

4

1 回答 1

3

我将您的脚本缩减为:

#! /bin/tcsh

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

这给出了同样的错误。我认为罪魁祸首是

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

应该怎么-n做?我认为它想要一个数字,但得到别的东西......

更新:bash 中的 -n 表示“字符串的长度不为零”。在我的 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

试试看它是否有效。

于 2010-09-11T19:44:27.553 回答