查看積分策略說明發表回覆
Discuz! 代碼
提示插入
直接插入
說明訊息

插入粗體文本 插入斜體文本 插入下劃線 置中對齊 插入超級連結 插入信件位址 插入圖像 插入 flash 插入代碼 插入引言 插入列表
刪除線 直線分隔線 虛線分隔線
    
添加文字底框
內容 [字數檢查]:

表情符號

更多 Smilies
字型大小 |||
溫馨提示:本區開放遊客瀏覽。


文章關鍵字 : [功能說明]
(關鍵字可加強搜索準確性, 如關鍵字多於一組, 請以 , 作分隔, e.g. : 阿笨,shiuh,第一笨)

 關閉 URL 識別 | html 禁用
 關閉 表情符號 | 表情符號 可用
 關閉 Discuz! 代碼 | Discuz! 代碼 可用
使用個人簽名
接收新回覆信件通知
推薦放檔網絡空間

檔案(Torent, zip等)
  1. freedl
  2. multiupload
  3. btghost
  4. 便當狗
  5. mediafire
  6. pillowangel
圖片(JPG, GIF等)
  1. hotimg
  2. tinypic
  3. mousems2
  4. imageshack
  5. imm.io
>>>歡迎推薦好用空間


最新10篇文章回顧
innova

 發表於 2012-12-19 03:25 PM

不太了解耶?
能簡單舉個例 說明 select的用法嗎??
thanks.


splin

 發表於 2012-12-14 07:55 PM

如果有一堆檔案,想要自動生成的選項,可以使用
Select , do  , done 的語法。


innova

 發表於 2012-9-13 07:11 PM

你是想 自動生成 menu 還是怎樣?

#!/bin/sh
_FILE_=xxx

l=`wc -l < $_FILE_`
x=1
while [ "$x" -le "$l" ] ; do
  read y
  echo $x): $y
  x=`expr $x + 1`
done < $_FILE_


watchme

 發表於 2012-8-23 10:22 AM

利用 include 檔案來配置輸入選項跟執行指令可能會是比較好的方案,甚至可以在執行期改變選項跟執行指令的內容。
你需要先學習的幾個關鍵
1. include 的用法
2. for aaa in aaas 的用法
3. $IFS 的用法
4. 最基本的 if []; then 還不會就得打屁股了
5. 用 while 迴圈把他包成無窮迴圈等到 exit 為止應該也是很基本的

我想會這些應該就夠寫出這個功能了,只是被 include 盡來的檔案還是要手動維護,雖然也能自動變更,但是那是另一個議題了,而且要先有規則才有可能。

中午抽空寫了一個,顧慮到執行指令有可能要有空白帶參數,所以用 read 逐行讀取以及 eval 執行來實做 ,參考看看:

檔案 mycmd (最後請務必留一行空行,這是 linux shell script 的其中一個罩門)

引用:

1:clear
2:/etc/init.d/squid start
3:/etc/init.d/squid stop



檔案 mytest.sh

引用:

EXITFLAG=0
CMDS=""
while [ "$EXITFLAG" == "0" ]
do
        echo "Main Menu"
        echo "0:Exit"
        while read line
        do
                echo $line
                IFS_SAVE="$IFS"
                IFS=":"
                set - $(echo "$line")
                eval "CMD$1=\"$2\""
                CMDS="$CMDS CMD$1"
                IFS="$IFS_SAVE"
        done < "mycmd"
        read -p "please enter option:" opt
        if [ "$opt" == "0" ]; then
                echo "Bye Bye"
                EXITFLAG=1
        else
                eval "CMD=\$CMD$opt"
                if [ "" == "$CMD" ]; then
                        echo "$opt is a invalid option!"
                        echo ""
                else
                        eval $CMD
                fi
                for CMD in CMDS
                do
                        eval "CMD$opt=\"\""
                done
                CMDS=""
        fi       
done


[watchme 在  2012-8-23 01:40 PM 作了最後編輯]


ericshliao

 發表於 2012-8-23 06:58 AM

以我shell script粗淺的瞭解:
1.
你應該不是想以test1 去修改 test 的檔案內容,而只是想讓銀幕上test1輸出的選單能跟在test輸出的選單的下方。但我不是很確定你的目的。
2.
選單編號可以用一個變數來紀錄,每次加一,不必寫死在shell script裡。


nashsai

 發表於 2012-8-23 05:19 AM

各位前輩大家好,有些問題想請教各位

我有個文件 /usr/local/sbin/test 內容是一個選單,裡面很多選項 選項會去跑對應的
script

內容
#!/bin/sh
#
#
echo "MAIN MENU"
echo "0. exit"
echo "1. aaa"
echo "2. bbb"
echo "3. ccc"
read -p "please enter option" opt
case  $opt in
0) exit ;;
1) /usr/local/sbin/aaa ;;
2) /usr/local/sbin/bbb ;;
3) /usr/local/sbin/ccc ;;
*) echo "$opt is a invalid option, please [enter] key continue"
/usr/local/sbin/test ;;
esac

然後需要使用另外的文件 對test插入一些內容  具體方法我目前還沒想到
比方說 test1 這個script,

read image    // 請輸入一個script名稱 假設我輸入ddd

之後會在test這個文件 插入
echo "4. ddd"

4) /usr/local/sbin/ddd ;;

----------------------------------------------------------------------
目前卡在兩個地方

1.我不知道如何在特定的地方插入資料 如上面 我要怎麼判別 讓資料插入在我要的位置
例如 echo "4. ddd"就插在 echo "3. ccc"的下面...
      4) /usr/local/sbin/ddd ;; 就插在 3) /usr/local/sbin/ccc ;; 的下面..

2.因為有可能會新增很多筆資料 要如何讓前面的數字有規律  假設現在有 0 1 2 3 這四
個選項 我現在新增的數字就是4,下次新增就是5..


打的有點亂,不知道各位前輩看得懂嗎..
感謝各位收看





所在時區為 GMT+8, 現在時間是 2020-7-5 03:15 AM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.016351 second(s), 6 queries , Qzip disabled