我有嚴重的問題,試圖找出如何在使用Tcl的If語句中評估表達式。這是我有:在if語句中使用Tcl評估表達式爲true
#!/bin/sh
#The next line executes wish - wherever it is \
exec wish "$0" "[email protected]"
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
,這是我從終端獲得:
# wan27
Error in startup script: wrong # args: no script following " $apsta == 1 " argument
while executing
"if { $apsta == 1 }"
(file "/usr/bin/wan27" line 9)
我只是想輸出一個幸福的笑臉如果Apache運行,是令人失望的,如果阿帕奇停止 - 基於布爾條件是否文件「/var/run/apache2.pid」的存在......
你已經差不多了使用一個真正的佈雷斯風格的Tcl(選擇你自己的縮進規則,雖然,但我更喜歡3個或4個空格),因爲否則的語言結束語句在第一個換行符。你唯一的選擇是在你想要繼續的行尾添加額外的反斜槓,但是我認爲這很糟糕。 (或者,用一個很長的行寫一些命令之間的分號,醜陋的,但沒有大括號/縮進問題。) – 2010-11-22 01:10:24
好吧,我現在明白了,這就解釋了「沒有腳本跟在」thingy。口譯員希望在if語句的同一行中有一個大括號。我還注意到,關鍵字如果需要用空格分隔,並且不能粘在評估符號上,如{ – fabjoa 2010-11-22 10:24:44
}還要注意''[文件存在...]'返回真/假結果,所以你不需要明確地將結果與1進行比較:'if {$ apsta} {...}' – 2010-11-22 14:16:02