RSS   



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


 


 
主題: [問題]Shell script 自動插入資料的一些問題   字型大小:||| 
nashsai
驢有所悟
等級: 3等級: 3


今日心情

 . 積分: 10
 . 文章: 13
 . 收花: 33 支
 . 送花: 13 支
 . 比例: 0.39
 . 在線: 664 小時
 . 瀏覽: 6700 頁
 . 註冊: 6760
 . 失蹤: 1013
 . TW
#1 : 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..


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



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


今日心情

 . 積分: 849
 . 精華: 2
 . 文章: 1589
 . 收花: 7188 支
 . 送花: 5723 支
 . 比例: 0.8
 . 在線: 5412 小時
 . 瀏覽: 20831 頁
 . 註冊: 6764
 . 失蹤: 3266
#2 : 2012-8-23 06:58 AM     只看本作者 引言回覆

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



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

十週年紀念徽章(五級)  

今日心情

 . 積分: 926
 . 文章: 2172
 . 收花: 8002 支
 . 送花: 3799 支
 . 比例: 0.47
 . 在線: 3480 小時
 . 瀏覽: 31072 頁
 . 註冊: 7234
 . 失蹤: 15
 . TWed2k-DVD幫
#3 : 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  快速回覆 新增/修改 爬文標記
innova
銀驢友〔高級〕
等級: 14等級: 14等級: 14等級: 14


十週年紀念徽章(五級)  

今日心情

 . 積分: 916
 . 文章: 2714
 . 收花: 7188 支
 . 送花: 1461 支
 . 比例: 0.2
 . 在線: 2182 小時
 . 瀏覽: 15142 頁
 . 註冊: 6957
 . 失蹤: 7
 . 火星
#4 : 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_



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


 . 積分: 0
 . 文章: 6
 . 收花: 1 支
 . 送花: 9 支
 . 比例: 9
 . 在線: 5 小時
 . 瀏覽: 0 頁
 . 註冊: 6849
 . 失蹤: 1003
#5 : 2012-12-14 07:55 PM     只看本作者 引言回覆

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



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


十週年紀念徽章(五級)  

今日心情

 . 積分: 916
 . 文章: 2714
 . 收花: 7188 支
 . 送花: 1461 支
 . 比例: 0.2
 . 在線: 2182 小時
 . 瀏覽: 15142 頁
 . 註冊: 6957
 . 失蹤: 7
 . 火星
#6 : 2012-12-19 03:25 PM     只看本作者 引言回覆

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



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

   

快速回覆
表情符號

更多 Smilies

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

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


 



所在時區為 GMT+8, 現在時間是 2024-4-19 03:53 PM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.027851 second(s), 8 queries , Qzip disabled