1

我编写了一个简单的 k shell 程序,但我看到以下错误“第 11 行的 0403-057 语法错误:不需要‘then’。”

代码是

 #!/usr/bin/ksh
    function check_rm 
   {
  number=$#    #assign number of parameters
if [[ $1 -gt 0 ]]; #if RC is success
    then 


        if[[ "$number" -gt 2 ]];  
        then         

        /usr/bin/mv  $4  $3
        echo " ERROR for $2 " 
    fi


    #user_name=`whoami`
    #mail_body="$3 checked in by $user_name" 
    #echo $mail_body 

else 


        if[[ "$number" -gt 2 ]];  
            then 

            /usr/bin/rm -rf $4
        fi      
        echo "GOOD for $2  "   
        echo "3f was successful"
fi                  

}

有人可以帮忙吗?

4

2 回答 2

3

正如 Wrikken 在评论中指出的那样,问题是在if[[;之间的那条线上缺少空格。ksh 需要这个来告诉两者是分开的。脚本后面也有同样的问题;您需要修复这两种情况。

于 2013-03-21T13:45:06.793 回答
0

您可以删除“;” 在你的 if 条件之后。如果条件具有非常严格的语法,我更正了您的代码:

     #!/usr/bin/ksh

    function check_rm 
    {
        #assign number of parameters
        number=$#    
        #if RC is success
        if [[ $1 -gt 0 ]] 
        then 
            if [[ ${number} -gt 2 ]]
            then         
                /usr/bin/mv  $4  $3
                echo " ERROR for $2 " 
            fi


            #user_name=`whoami`
            #mail_body="$3 checked in by $user_name" 
            #echo $mail_body 

        else 
            if [[ ${number} -gt 2 ]]
            then 
                /usr/bin/rm -rf $4
            fi      
            echo "GOOD for $2  "   
            echo "3f was successful"
        fi                  

    }
于 2013-03-21T10:54:18.417 回答