2012-07-26 141 views
0

當我執行這個腳本的終端打開並立即關閉,所以我看不到結果。從腳本打開幾個xterm窗口而不關閉

沒有我知道的幫助。

我使用的SunOS 5.9,這不是我的錯))

#!/bin/bash 

if [ -z "$1" ]; then 
echo "enter command" 
fi 

if [ -z "$2" ]; then 
echo "enter command" 
fi 

if [ -z "$3" ]; then 
echo "enter command" 
fi 

xterm -e $1 | wait & 

xterm -e $2 | wait & 

xterm -e $3 | wait & 

回答

0

假設你想看到的命令產生什麼即使失敗了,替換爲你的命令:

xterm -xrm '*hold: true' -e $1 & # this is to keep xterm from closing 
pid1=$! # this is to save the pid, in case you want to close it 
disown # this is to prevent the finishing shell from closing the xterm 

或者,如果xterm不支持-xrm選項:

CMD="$1" xterm -e $SHELL -c '$SHELL -c "$CMD"; read' 

這兩個shell將保護命令中的語法錯誤,即使在這種情況下也能保持xterm打開。

+0

不幸沒有幫助..... 但我會記住它的未來 – 2012-07-26 12:48:24

+0

你的xterm可能是一個奇怪的東西,它不支持'-xrm'。您可以查看暫停運行命令的shell。我會在另一臺機器上更新回答 – fork0 2012-07-26 14:50:29

+0

! – 2012-07-27 13:49:18

1

-hold選件於1999年被添加到XFree86 xterm(patch 116)。但是,Sun繼續提供xterm的「openwin」二進制文件,直到2011年的Solaris 11(請參閱xterm常見問題解答Why can't I use the pageup/pagedown keys?)。在那之前,Sun在免費軟件CDROM上提供了現代xterm。

提供「保持」功能的通常建議是在所需命令之後包含「讀取」命令。這假定要執行的命令在shell中運行。如果您想運行vi,則建議的修復程序不起作用,因爲可能涉及到替代屏幕。此外,它依靠$SHELL設置(並且對某些設置不起作用,例如tcsh - 但對bash有效)。

這是一種改進的腳本,解決了這些問題:

#!/bin/bash 
export SHELL=/bin/bash 
while [ $# != 0 ] 
do 
    CMD="$1" \ 
    xterm -xrm '*titeInhibit:true' -e $SHELL -c '$SHELL -c "$CMD"; read' 
    shift 1 
done 

xterm所有版本支持-xrm開關(談到自由與XT的X工具包庫)。

明確的titeInhibit資源解決了運行全屏應用程序(如vi)時遇到的問題。在Solaris 11中爲xterm提供的終端描述對於全屏應用使用替代屏幕。這在xterm FAQ Why doesn't the screen clear when running vi?中討論。如果沒有資源設置,如果將腳本運行到vi幾個文件,屏幕將在退出vi並等待用戶按輸入關閉窗口後被清除。在其他系統中,這種行爲不是默認的,xterm或ncurses源已經被修補以反映包裝者的偏好。同樣,Solaris 9的terminfo源代碼已被修補。儘管如此,未能處理xterm的常用行爲將是一個問題。

例如,即使使用Solaris 9,許多用戶依賴ncurses來提供可行的彩色終端描述。 Solaris(如xterm FAQ What $TERM should I use?中所述)提供了xtermc,但其功能鍵與實際的xterm完全不同,因此它是一個糟糕的選擇。Sun的免費軟件光盤的terminfo(來自ncurses)沒有修補;使用該終端數據庫的人員通過備用屏幕獲得了預期的行爲。