請問shell script的寫法 - Linux

Table of Contents

※ 引述《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/

--

All Comments

Wallis avatarWallis2009-05-28
謝謝你,這樣寫變好簡單,我試試看!!!
Jake avatarJake2009-05-28
程式說找不到s{439..535}5000.dat這個檔案
Ina avatarIna2009-05-29
你不能照key丫 他只是跟你說方法吧我猜應該是
Rachel avatarRachel2009-05-30
for(( num=459; num<=535; i=i+1 )) do ./a.out .....這樣
Quanna avatarQuanna2009-06-03
然後記得前面要initial num=要initial的值@@"
George avatarGeorge2009-06-08
謝謝樓上,我照你的方法,搞定了,可是可以幫我看一下read那邊
Daph Bay avatarDaph Bay2009-06-09
我想要打上整個檔名可是卻只有判斷中間數字為變數的指令嗎
要不然每次都要進shell裡面改它的起始值和末值,有點麻煩
Oscar avatarOscar2009-06-13
要這樣寫 ./a.out<"s${num}xxxx.dat"
Brianna avatarBrianna2009-06-15
我的 bash 是可以用 {1..9} 展開成陣列的...該不會是
版本有差吧
Eden avatarEden2009-06-20
其實我不太瞭解你要的是什麼...隨便寫你看看就好
Suhail Hany avatarSuhail Hany2009-06-24
明天回研究室就試試看,謝謝你們
Elma avatarElma2009-06-27
問題解決了,謝謝大家!!