使用Tcl在if语句中将表达式计算为true

fab*_*joa 0 tcl

我正在试图找出如何使用Tcl评估If语句中的表达式.这就是我所拥有的:

#!/bin/sh
#The next line executes wish - wherever it is \
exec wish "$0" "$@"

set apid "/var/run/apache2.pid"

set apsta [file exist $apid]

if { $apsta == 1 }

{
    set result ":)"
}

else

{
    set result ":("
}

label .status -text $result
pack .status
Run Code Online (Sandbox Code Playgroud)

这就是我从终端获得的:

# wan27
Error in startup script: wrong # args: no script following " $apsta == 1 " argument
    while executing
"if { $apsta == 1 }"
    (file "/usr/bin/wan27" line 9)
Run Code Online (Sandbox Code Playgroud)

如果Apache正在运行,我只是想输出一个快乐的笑脸,如果Apache被停止,这是一个令人遗憾的笑脸 - 基于布尔条件,无论文件"/var/run/apache2.pid"是否存在......

msw*_*msw 9

Tcl if语句的语法是

if condition statement else statement
Run Code Online (Sandbox Code Playgroud)

必须在一条线上.大括号允许跨线连续,并且它们的位置是强制性的:

if { $apsta == 1 } {
    set result ":)"
} else {
    set result ":("
}
Run Code Online (Sandbox Code Playgroud)

正如你所写,Tcl看到了

if { $apsta == 1 }
Run Code Online (Sandbox Code Playgroud)

并停在那里产生语法错误.