Re: [問題] 請問shell script的寫法

看板Linux作者 (CA)時間16年前 (2009/05/26 23:00), 編輯推噓7(707)
留言14則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《sinlin (新生活!~)》之銘言: : 我是用red hat9.0 : 現在我有個程式執行檔是a.out : 每次執行就會請你輸入要執行的檔 例:s4585000.dat : 我總共要執行很多次依續為 s4595000.dat-->s4605000.dat--->...--->s5355000.dat : 我想寫一個shell script跟執行檔在同個目錄下 : 可以直接幫我輸入./a.out以後 : 再幫我輸入要執行的檔名 : 跑一次以後就把檔名加10000 : 一直跑到最後一個檔跑完為止 sorry 重寫 #! /bin/bash for num in {459..535} ; do ./a.out <<< "s${num}5000.dat" done ==== 二版 #! /bin/bash for num in $(seq $1 $2) ; do ./a.out <<< "s${num}5000.dat" done 由於不知道你是從 stdin 讀檔名還是直接檔案轉向到 stdin 這部分就請自己變通一下 用法就 ./demo.sh 459 535 基本上用參數會比 read 靈活很多,也不用按太多次 enter -- 自High筆記(半荒廢) http://legnaleurc.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.146.194.91 ※ 編輯: legnaleurc 來自: 122.146.194.91 (05/26 23:00)

05/26 23:02, , 1F
謝謝你,這樣寫變好簡單,我試試看!!!
05/26 23:02, 1F

05/26 23:15, , 2F
程式說找不到s{439..535}5000.dat這個檔案
05/26 23:15, 2F

05/27 00:33, , 3F
你不能照key丫 他只是跟你說方法吧我猜應該是
05/27 00:33, 3F

05/27 00:34, , 4F
for(( num=459; num<=535; i=i+1 )) do ./a.out .....這樣
05/27 00:34, 4F

05/27 00:35, , 5F
然後記得前面要initial num=要initial的值@@"
05/27 00:35, 5F

05/27 00:40, , 6F
謝謝樓上,我照你的方法,搞定了,可是可以幫我看一下read那邊
05/27 00:40, 6F

05/27 00:41, , 7F
我想要打上整個檔名可是卻只有判斷中間數字為變數的指令嗎
05/27 00:41, 7F

05/27 00:41, , 8F
要不然每次都要進shell裡面改它的起始值和末值,有點麻煩
05/27 00:41, 8F

05/27 00:43, , 9F
要這樣寫 ./a.out<"s${num}xxxx.dat"
05/27 00:43, 9F

05/27 00:53, , 10F
我的 bash 是可以用 {1..9} 展開成陣列的...該不會是
05/27 00:53, 10F

05/27 00:53, , 11F
版本有差吧
05/27 00:53, 11F

05/27 01:02, , 12F
其實我不太瞭解你要的是什麼...隨便寫你看看就好
05/27 01:02, 12F
※ 編輯: legnaleurc 來自: 122.146.194.91 (05/27 01:13)

05/27 01:16, , 13F
明天回研究室就試試看,謝謝你們
05/27 01:16, 13F

05/29 00:18, , 14F
問題解決了,謝謝大家!!
05/29 00:18, 14F
文章代碼(AID): #1A70Fw1e (Linux)
文章代碼(AID): #1A70Fw1e (Linux)