iT邦幫忙

0

Shell script 執行外部程式問題

joe661 2009-05-04 09:14:4413083 瀏覽

我需要導出一個選項式程式的第3個選項結果,請問我要如何寫這個script ?

看更多先前的討論...收起先前的討論...
ping iT邦研究生 1 級 ‧ 2009-05-04 09:32:28 檢舉
這問題可能發問的不是很清楚!
fillano iT邦超人 1 級 ‧ 2009-05-04 13:51:16 檢舉
選項程式會把結果輸出到標準輸出嗎?否則不可能取到選擇的結果。
fillano iT邦超人 1 級 ‧ 2009-05-04 13:53:18 檢舉
有的話,把結果放進opt變數,然後套用gkkangel的做法,修改一下應該就可以。
joe661 iT邦研究生 1 級 ‧ 2009-05-05 07:34:24 檢舉
選項程式可以輸出,但是我無法去執行選項程式的第3選項(選項程式是廠商的程式不能修改)
fillano iT邦超人 1 級 ‧ 2009-05-05 09:22:27 檢舉
請先大略解釋一下背景啦。
1. 最基本的:OS是啥
2. 也很基本的:既然問shell,那是哪種shell
3. 選項程式是:console or gui
4. 所以你的程式會從標準輸出輸出結果,但是你希望shell可以幫你選擇執行程式的第3選項?
14
ericmachang
iT邦新手 4 級 ‧ 2009-05-06 16:14:30
最佳解答
  1. 編輯一個SHELL, menu.sh, 模擬選項程式
    =============================
    #!/usr/bin/ksh

/usr/bin/clear
echo "1. Apple"
echo "2. Banana"
echo "3. Orange"
echo "4. Blue Berry"
echo "5. Watermelon"
echo "What do you want to buy ? (1/2/3/4/5) \c"
read ans

case $ans in
1)
echo "You bought Apple !"
;;
2)
echo "You bought Banana !"
;;
3)
echo "You bought Orange !"
;;
4)
echo "You bought Blue Berry !"
;;
5)
echo "You bought Watermelon !"
;;
*)
echo "You bought nothing !"
;;
esac

  1. 編輯 ans.txt , 裏面存要輸入的選項, 如3
    ================
    3

=======================

  1. 編輯一個SHELL, call_menu.sh, 即為呼叫選項程式的SHELL SCRIPT
    ======================
    menu.sh < ans.txt > out.txt
    ======================

  2. cat out.txt, 即可看到選項3的結果

joe661 iT邦研究生 1 級 ‧ 2009-05-07 07:40:58 檢舉

我依照上面的寫法執行出來,out.txt都是 You bought nothing 沒有ans.txt內選項的結果

joe661 iT邦研究生 1 級 ‧ 2009-05-11 07:52:27 檢舉

我測試成功了,謝謝各位的解答!!!

24
gkkangel
iT邦好手 1 級 ‧ 2009-05-04 10:29:02

可以使用Case結構判斷
ex:

&lt;pre class="c" name="code">
echo -n "請輸入您選項(1/2/3/4):"
# 由標準輸入讀入,在放在 opt 中
read opt

case "$opt" in
   1) echo "1 太好了!"
      ;;
   2) echo "2 太妙了!"
      ;;
   3) echo "3 太爽了!"
      ;;
   4) echo "4 太香了!"
      ;;
   *) echo "$opt 超出選項 1~4 的範圍"
esac
小成 iT邦高手 10 級 ‧ 2009-05-04 11:59:09 檢舉

臥龍三小?
臥龍小三??

gkkangel iT邦好手 1 級 ‧ 2009-05-05 15:09:49 檢舉

訂正一下:是臥龍小三 眼殘看錯了..囧

16
pcboy
iT邦高手 1 級 ‧ 2009-05-04 12:36:07

export USERNAME=pcboy

USERNAME=pcboy
export USERNAME

http://linux.vbird.org/linux\_basic/0340bashshell-scripts.php

fillano iT邦超人 1 級 ‧ 2009-05-04 18:01:24 檢舉

這是設定環境變數吧?跟問的問題好像沒有什麼關係???

18
rely1020
iT邦新手 4 級 ‧ 2009-05-05 09:02:23

先重新釐清一下你的問題,我理解的是:
1)用shell script去執行一支現成的“選項”應用程式,並帶入參數“第3個選項”。
2)用shell script去執行一支現成的“選項”script batch,並帶入參數“第3個選項”。
我的答案是:
1)這支“選項”應用程式有提供由外控制的介面嗎(如:Automation技術)沒的話,就別想了。除非用 robot。
2)樓上弟兄們的解是很好的參考了,還不行的話就去買書吧。

我要發表回答

立即登入回答