RSS   



  可打印版本 | 推薦給朋友 | 訂閱主題 | 收藏主題 | 純文字版  


 


 
主題: [問題]Shell script 自動插入資料的一些問題   字型大小:||| 
watchme
銀驢友〔高級〕
等級: 14等級: 14等級: 14等級: 14
無我

十週年紀念徽章(五級)  

今日心情

 . 積分: 926
 . 文章: 2172
 . 收花: 8002 支
 . 送花: 3872 支
 . 比例: 0.48
 . 在線: 3516 小時
 . 瀏覽: 31393 頁
 . 註冊: 7450
 . 失蹤: 0
 . TWed2k-DVD幫
#1 : 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 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記

   

快速回覆
表情符號

更多 Smilies

字型大小 : |||      [完成後可按 Ctrl+Enter 發佈]        

溫馨提示:本區開放遊客瀏覽。
選項:
關閉 URL 識別    關閉 表情符號    關閉 Discuz! 代碼    使用個人簽名    接收新回覆信件通知
發表時自動複製內容   [立即複製] (IE only)


 



所在時區為 GMT+8, 現在時間是 2024-11-22 12:41 AM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.020076 second(s), 7 queries , Qzip disabled