0

我有两个要向其传递参数的 tcl 脚本。第一个得到一个数字并给出它的阶乘,第二个得到两个数字并相应地执行一些条件和输出。我在 Cygwin 上使用 tclsh。当我以这种方式运行脚本时,我无法将参数传递给脚本:
$ tclsh fact.tcl
这给出了我没有为脚本提供正确数量的参数的错误。
为了传递参数,我尝试了以下方法,但最终收到错误“右大括号后的额外字符”:
tclsh fact.tcl 5
阶乘的 tcl 代码是:

if {$argc !=1} {
    puts stderr "Error! ns called with wrong number of arguments! ($argc)"
    exit 1
} else {
    set f [lindex $argv 0]
}


proc Factorial {x} {
for {set result 1} {$x>1}{set x [expr $x - 1]}{
    set result [expr $result * $x]
}
return $result
}
set res [Factorial $f]
puts "Factorial of $f is $res"

条件句(第二个脚本)的 tcl 代码如下:

if {$argc!=2} {
    puts "Error! incorrect parameter count ($argc)"
    exit 1
}
set a [lindex $argv 0]
set b [lindex $argv 1]


if {fmod($a, 2) ==0} {
    if {fmod($b,2) ==0} {
        if {$a<$b}
        puts "a and b even; pow=[expr pow($a,$b)]"
        else 
        puts "a and b even. pow=[expr pow($b,$a)]"
    }
    else {
        if{$a>=$b}
            puts [expr $a-$b]
        else 
            puts [expr $b-$a]

    }
}
else if {fmod($a,2)==1} {
    if {fmod($b,2)==1} {
        if {$a<$b}
        puts "a and b even; pow=[expr pow($a,$b)]"
        else 
        puts "a and b even. pow=[expr pow($b,$a)]"
    }
    else {
        if{$a>=$b}
            puts [expr $a-$b]
        else 
            puts [expr $b-$a]

    }
}
4

0 回答 0