运行.sh文件时出现未知运算符错误

时间:2013-05-31 15:41:47

标签: solaris ksh

这是我的脚本,它搜索所有日志文件并将其压缩并删除旧存档。 但是,当我运行此脚本时,我收到以下错误:

./ file.sh:test:unknown operator。

代码:

#Directory of archives

archive_dr="/u01/apps/weblogic/weblogic10/user_projects/archive"

#Directory of log files

logdir="/u01/apps/weblogic/weblogic10/user_projects/domains/BPM/servers/BPM_MS1/logs"


cd $archive_dr

#Removing older archived files

if [ find . \( -name '*.log0*.gz' -o \
         -name '*.out0*.gz' \) ]
then
    rm *.out00*.gz *.log00*.gz
fi

cd $logdir

#Search,zip and move the new archive files

if [ find . \( -name '*.log0*' -o -name '*.out0*' \) \
          -atime +30 ]
then
    for log_files in `find . \( \
            -name '*.log0*' -o -name '*.out0*' \
        \) -atime +30`

    do
        gzip $log_files
        mv $log_files.gz /u01/a*/w*/w*/us*/archive
    done

    if [$? = 0]; then
        echo "Logs Archieved Successfully"|
        mailx -s " Logs Archieved Successfully" \
            -c 'x@abc.com' y@abc.com'
    fi

请告诉我哪里出错?

2 个答案:

答案 0 :(得分:3)

变化:

 if [ find . \( -name '*.log0*.gz' -o -name '*.out0*.gz' \) ]; then

为:

 if [ "$(find . \( -name '*.log0*.gz' -o -name '*.out0*.gz' \))" ]; then

您希望运行find命令并测试它是否返回任何输出。 test命令([是其缩写)不执行其内容,它希望它是一个要测试的表达式,如if [ "$foo" = 3 ]

另请注意,find会递归到子目录,但只在当前目录中rm。如果您不想递归,请添加-maxdepth 1选项。

不需要第二个if。如果find找不到任何文件,则for循环将无法操作,只会立即终止。

答案 1 :(得分:0)

抱歉,无法正确编辑帖子。但是,让它运行,:))

<强> CODE

#Directory of archives    
archive_dr="/u01/apps/weblogic/weblogic10/user_projects/archive"    

  #Directory of log files

 logdir="/u01/apps/weblogic/weblogic10/user_projects/domains"
   cd $archive_dr 
 #Removing older archived files
   find . \( -name '*.log00*.gz' -o -name '*.out00*.gz' \) -exec  rm {} \;

 cd $logdir

    #Search,zip and move the new archive files

for log_files in `find . \( -name '*.log0*' -o -name '*.out0*' \) -ctime +5`
    do

            gzip $log_files

            mv $log_files.gz /u01/a*/w*/w*/us*/archive

    done        
     if [ $? = 0 ]; then  

   echo "text"|mailx -s "test" -c abc@def.com' mno@pqr.com'  
 fi