2

ここに記載されている bash スクリプトに相当する C シェル スクリプトを作成しようとしています。

これは私が持っているものです:

#! /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 シェルの数値は整数でなければならない」と記載されているので、試してみました。

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 に答える