Cd-Command
關於真實/符號路徑的 tcl cd/pwd 命令
當我在 tcl 環境下工作時,一旦我 cd 到一個目錄,即使我指定的路徑是它的符號連結,那麼無論我執行pwd -L還是pwd -P,它們都返回絕對路徑。這對我來說很麻煩,因為我嘗試用變數名替換使用者特定的工作區路徑,這樣當不同的使用者執行腳本時,他們將切換到自己的工作區。但是,系統 $::env(WORK) 返迴路徑的符號連結,而 pwd 命令返回絕對路徑,因此我無法執行 sed 命令。
例如,
stcl> cd $::env(WORK) stcl> puts [format "cd %s" [exec echo [pwd] | sed "s,$::env(WORK),\$WORK,g"]]
我想要程式碼做的是列印“cd $WORK”,但是因為 pwd 返回絕對路徑,即使我使用 pwd -L,我也無法與 sed 命令匹配,因此無法替換字元串。
看起來 Tcl 沒有讓您對 cd 和 pwd 進行任何控制。
另一種選擇:解析 WORK env var 中的符號連結,並將其與 pwd 進行比較:
format {cd "%s"} [expr {[pwd] eq [file normalize $::env(WORK)] ? {$WORK} : [pwd]}]