2011-02-07 31 views
0

我有以下行ksh的別名或功能:,做「setTermName嗒嗒」

echo -ne "\033]0;blah\007" 

是正確的設置項名稱blah。但是,如果我將該行放入函數中,如下所示:

setTermName() 
{ 
    echo -ne "\033]0;blah\007" 
} 

它不起作用了。我猜想在函數中沒有正確處理轉義序列。所以我的問題可以重新表達爲:你如何在函數內使用轉義序列?

我只希望能夠從命令行執行setTermName foo

+0

什麼版本'ksh'?什麼操作系統?什麼終端?它在Linux上使用ksh93,pdksh,Bash,zsh或破折號在PuTTY,gnome-terminal,xterm或屏幕上以及在Cygwin中使用pdksh或Bash在mintty中工作正常。你的'PS1'設置爲什麼? –

回答

1

您從交互式ksh調用echo命令嗎?你確定它理解-ne?這不是標準。也許使用printf

而您可以嘗試使用alias代替。

UPD:我和AIX ksh的檢查,下面的函數工作:

set_tn() 
{ 
    printf "\033]0;$1\007" 
} 
+0

是的,如果我從交互式ksh的命令行打印回顯,它會起作用。我已經用'printf'\ b%s \ a「$ 1'嘗試過了,但它也不起作用。你能否將參數傳遞給別名? – rturrado

+0

@rturrado你的系統是什麼/ ksh?可能我有一些這樣的系統在手邊檢查。我在AIX上試過了,'echo'並不理解。通常,函數中的轉義沒有問題。它怎麼不工作?它不打印任何東西,或只是省略逃逸?對不起,別名,我失去了你需要傳遞一個參數,所以這不是一個選項。 – 2011-02-07 15:32:22

+0

嗯......你的set_tn()不適合我。它只是在標準輸出上打印參數。 ksh --version顯示:sh(AT&T Research)93t + 2010-02-02。 – rturrado

相關問題