好吧,所以我似乎無法弄清楚這究竟是如何工作的。運行附加代碼時,執行「\ t」(「#」arm line 1)時導致無效的命令名「」「從」switch -regexp - $ line {「(以及基本文件的其餘部分)中調用評論在正則表達式切換語句的上下文中工作
我遇到了這個問題,最後想出了#正在做它,我試着用regsub(如下所示)逃脫它。我可以得到字符串解析的唯一方法是如果我從字符串中刪除#全部(inputString更改爲刪除#號)。
根據TCL以文本(包括命令)讀取所有行的聲明,我只能假定正在讀取的字符串包含#並且無法完成該行,當然返回錯誤。然而,逃避(嘗試1 \和2 \)沒有做任何事情來改善它所做的只是將\添加到所有其他的「非字詞」(我有 - 可以很好地工作,但現在有\ 's ...:S)
如果我刪除或取消註釋掉切換部分{^ [\ t] TEST。 $}的東西工作正常。
我正在修改一個腳本,並忽略了一些特定的情況,並決定將它們註釋掉。
有人可以解釋地球上發生了什麼,我能做些什麼來解決它?看起來.tcl文件仍然是解析#部分,即使它們是註釋,並且變得混亂。
嘗試修復
regsub -all {\W} $line {\\&} line;
代碼:
proc doConversion fname {
set inputString "* |# Bits\n* # Bits \n";
foreach line [split $inputString "\n"] {
switch -regexp -- $line {
# {^[ \t]*TEST.*$}
# {
# # Do nothing
# }
default {
}
}
}
}
doConversion "test"
更新: 我沒有找到這個資源,這也解釋了(在一定程度上)的意見混亂的性質,但我想我仍然不確定我能做些什麼:"Why can I not place unmatched braces in Tcl comments"。
的Tcl的評論機制的本質是這樣的:'#'是僅在預期開始命令的位置發表評論。另外,嵌入式腳本(例如'switch'的武器)可能會導致評論結尾的位置發生變化。這與其他語言不同,它是通用語法規則和Tcl對命令進行遞歸分解的方式的結果。每隔幾年,有人提出「修復」它,但它很難改變,似乎乍一看...... – 2012-07-16 21:30:20
是通過上面鏈接的TCL維基閱讀....這有點混亂.....這是當然。 – onaclov2000 2012-07-16 21:48:55