如何确定脚本要使用的shell?

时间:2014-03-16 16:14:18

标签: shell

我有这个无法运行的脚本,在我尝试修复它之前,我需要知道它应该运行什么样的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

1 个答案:

答案 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