csh脚本语法

时间:2013-02-26 05:31:17

标签: shell csh

我是csh脚本的新手,这是我第一次编写任何脚本: 这是代码:

#!/bin/csh

#arg1 path 
#arg2 condition 
#arg3 number of files 
#arg4-argN name of files

set i=0 
while ( $i < $3 ) 
        if ($2 == 0) then 
                cp /remote/$1/$($i+4) $1/new.$( $i+4 ) 
                p4 add $1/new.$($i+4) 
        else 
                p4 edit $1/new.$($i+4) 
                cp /remote/$1/$($i+4) $1/new.$($i+4)
        endif 
        $i = $i+1 
end 

但是我在这里得到错误。非法变量名称。 我已经阅读了一些教程,但没有得到任何相关的东西。 请帮忙。 谢谢你。

2 个答案:

答案 0 :(得分:0)

您可以在第一行中使用标志-v和-x来查看脚本执行的操作

#!/bin/csh -vx

问题出现在您尝试将四个加到计数器变量

的部分
$($i+4)

csh无法添加这种方式。我会使用一个临时变量向你的计数器添加四个,然后在所有调用中使用该变量

@ i = 0 
while ( $i < $3 ) 
        @ iplusfour = $i + 4
        if ($2 == 0) then 
                cp /remote/$1/$($i+4) $1/new.$iplusfour 
                p4 add $1/new.$iplusfour 
        else 
                p4 edit $1/new.$iplusfour 
                cp /remote/$1/$iplusfour $1/new.$iplusfour 
        endif 
        @i = $i + 1 
end 

我还纳入了Willams的评论。

答案 1 :(得分:0)

最后一个增量可以简化为@ i++,即修饰muluman88的解决方案:

@ i = 0 
while ( $i < $3 ) 
    @ iplusfour = $i + 4
    if ($2 == 0) then 
        cp /remote/$1/$($i+4) $1/new.$iplusfour 
        p4 add $1/new.$iplusfour 
    else 
        p4 edit $1/new.$iplusfour 
        cp /remote/$1/$iplusfour $1/new.$iplusfour 
    endif 
    @ i++
end 

请确保在符号后有@(空格)。