我是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
但是我在这里得到错误。非法变量名称。 我已经阅读了一些教程,但没有得到任何相关的东西。 请帮忙。 谢谢你。
答案 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
请确保在符号后有
@
(空格)。