我有这个无法运行的脚本,在我尝试修复它之前,我需要知道它应该运行什么样的shell。
#
set pwrs = ( 0 0 0 0 0 0 0 0 )
@ pwrs[1]=1
@ next=2
while ( $next < 9 )
@ last = $next - 1
@ pwrs[$next] = $pwrs[$last] * 2
@ next = $next + 1
end
@count = 1
while ( $count <= 8 )
echo $pwrs[$count]
@ count = $count + 1
end
答案 0 :(得分:2)
我能够使用csh
生成适当的输出。我希望tcsh
能够正常运作。
原来我确实有csh可用。我将代码粘贴到cmdline中。
有一个错误。所有以@
char开头的数学计算必须与其后面的变量名分开,因此
@count = 1
需要修复为
@ count = 1
$ set pwrs = ( 0 0 0 0 0 0 0 0 )
$ @ pwrs[1]=1
$ @ next=2
$ while ( $next < 9 )
while? @ last = $next - 1
while? @ pwrs[$next] = $pwrs[$last] * 2
while? @ next = $next + 1
while? end
$ @ count = 1
$ while ( $count <= 8 )
while? echo $pwrs[$count]
while? @ count = $count + 1
while? end
<强>输出强>
1
2
4
8
16
32
64
128
[oracle@localhost ~]$
有关csh @
和$pwrs[$next]
(数组表示法)的说明,请参阅Grymoire Unix - Csh 。您的具体案例没有得到解决,但您应该能够解决这个问题。如果在构建不起作用的小测试用例后还有其他问题,请使用示例输入,预期输出和当前代码和输出发布它们。
另外,不要在csh上花费更多时间,虽然没有描述它的那么糟糕,但你最终会发现在csh中无法解决的问题。所有这些漂亮的cmd-line功能都包含在bash中,因此您可能需要考虑使用它。最后,请参阅Grymoire csh top 10 ,了解您希望将此代码转换为更新shell的详细原因。
IHTH