2017-09-04 69 views
2

我試圖獲得一個簡單的.sh腳本,在請求用戶輸入後運行一組X應用程序的windowmaker下運行。我所有的嘗試都是徒勞的;終端窗口在提問後蒸發,應用程序根本無法運行。我試圖通過在X控制檯上鍵入它的路徑來運行這個腳本,並且它完美地工作,但是當我運行該圖標時它不會。在windowmaker下使用腳本運行圖形應用程序

這些是我的2次嘗試;

echo "this or that? [a, b] " 
read input 
if [[ $input == "a" || $input == "A" ]]; then 
/path/to/app1 "/file/to/open" & 
/path/to/app2 "/file/to/open" & 
/path/to/app3 "/file/to/open" & 
path/to/app4 & 
else 
/path/to/app5 "/file/to/open" & 
/path/to/app6 "/file/to/open" & 
/path/to/app7 "/file/to/open" & 
path/to/app8 & 

fi 

read -p "this or that? [a, b] " doit 

case $doit in 
    a|A) 

    /path/to/app1 "/file/to/open" & 
    /path/to/app2 "/file/to/open" & 
    /path/to/app3 "/file/to/open" & 
    path/to/app4 & 
    b|B) 
    /path/to/app5 "/file/to/open" & 
    /path/to/app6 "/file/to/open" & 
    /path/to/app7 "/file/to/open" & 
    path/to/app8 & 
;; 
esac 

在WindowMaker的設置,我創建了一個運行的xterm -e 「/path/to/script.sh」 的圖標。我不知道還有什麼要做。我希望有人能幫助我。提前致謝。

+0

你會得到什麼樣的錯誤? –

回答

0

一些不適合註釋塊的建議。

首先,捕捉一些調試:

  • 您已經閱讀用戶的輸入之後,呼應日期和輸入值到標準輸出,如:

read ... echo `date`" : input = $input" # or $doit

  • 修改您的圖標以將stdout/stderr轉儲爲文件,例如:

xterm -e "/path/to/script.sh >> /path/to/script.out 2>&1"

你運行一個測試失敗後,檢查/path/to/script.out任何(希望有用)消息...

  • ,如果你沒有看到date/input消息,並且沒有錯誤信息,然後你有與xterm -e呼叫(即,你甚至沒有得到的腳本調用)
  • 一個問題,如果你看到的date/input消息或腳本有關的錯誤信息,那麼你知道xterm -e電話是成功,您可以專注於腳本的內容...

與腳本一對夫婦的問題,因爲它們現在存在:

  • 你似乎缺少了APP4/app8呼叫領先/,也就是說,它們應該像:

/path/to/app4 & /path/to/app8 &

  • case語句,每個選項的測試應該w末用雙分號(;;);你這樣做了b|B)測試時,你錯過了它的a|A)測試,所以更新像這樣的腳本:

a|A) ... path/to/app4 & ;;

0

原來我居然得到了應用即可啓動,只需使用這樣的等待在每個塊的結尾,就像這樣:

echo "this or that? [a, b] " 
read input 
if [[ $input == "a" || $input == "A" ]]; then 
/path/to/app1 "/file/to/open" & 
/path/to/app2 "/file/to/open" & 
/path/to/app3 "/file/to/open" & 
path/to/app4 & 
wait 
else 
/path/to/app5 "/file/to/open" & 
/path/to/app6 "/file/to/open" & 
/path/to/app7 "/file/to/open" & 
path/to/app8 & 
wait 
fi 

我有一個問題那是無關的這一點,我要問一下。

相關問題