2011-01-03 7 views
1

私はそのbashを一度書く方法を知っていましたが、もう理解できません。Linuxサーバで異なる入力プログラムを実行するbashスクリプトを探しています

タイトルには、Linuxサーバーで実行するためのスクリプトが必要です。

私の目標は、繰り返し入力しなくてもコマンドを実行することです。 (私は、各実行で入力ファイルをチェーン化しています。)

実際
bsprun -npes 1 ./a.out file1.txt file2.txt 
bsprun -npes 2 ./a.out file1.txt file2.txt 
bsprun -npes 3 ./a.out file1.txt file2.txt 
bsprun -npes 4 ./a.out file1.txt file2.txt 
bsprun -npes 5 ./a.out file1.txt file2.txt 
bsprun -npes 6 ./a.out file1.txt file2.txt 
bsprun -npes 7 ./a.out file1.txt file2.txt 
bsprun -npes 8 ./a.out file1.txt file2.txt 

答えて

4

、おそらく、もう少し密接にあなたの説明を読んだ後、あなたがこの希望:

#!/bin/bash 

bsprun -npes "$1" ./a.out "$2" "$3" 

chmod +xスクリプト、それを呼び出します

./myscript 1 file1.txt file2.txt 
./myscript 2 file2.txt file3.txt 
./myscript 3 file4.txt file5.txt 
... 

のようなあなたの入力ファイルは、我々はスクリプトが少し賢く作ることができるパターンに応じて変化するが、あなたのファイル名はリクを見て何か不明である場合e。

は、あなたが投稿し正確な出力を得るようにループ内でそれを置くために:あなたは継続的にそれをしたい場合は

#!/bin/bash 

for i in {1..8}; do 
    bsprun -npes $i ./a.out file1.txt file2.txt 
done 
+0

を探しているまさにその結果のトンを返し、私はどのように実行するのです

bash script loop example 

あなたの友達ですそれ ?ソースと? – RanZilber

+0

ありがとう、これは私が探していたものです – RanZilber

1

、これを使用する:

#!/bin/bash 

i="1" 

while true; 
do 
    if [ $i -eq 9]; then 
     i=1 
    fi 
    bsprun -npes $i ./a.out file1.txt file2.txt 
    i = `expr $i + 1` 
done 
+0

ループの最後に 'i'の前後にスペースがあります。また、 'expr'は廃止されました。代わりに' i = $((i + 1)) 'を使用します。 – SiegeX

+0

@SigeX、thx。私は実際にそれを「回答窓」に入力して気付かなかった。 –

+1

']'の前にスペースが必要です(または 'if((i == 9))')。スクリプトのより単純なバージョンです: 'trueの場合; {1..9}で私のためにやる。 do bsprun ...;完了しました。 done " - あなた自身で変数を管理する必要はありません。 '... do for((i = 1; i <= limit; i ++));を実行することもできます。 〜をしてください。ちなみに、 'expr'を使う代わりに'((i ++)) 'を使うことができました。 –

0

それはあなたのように聞こえますBASHを書くことを学びたいと思うかもしれません。

https://github.com/37signals/sub

その私のスクリプトを保ちながら私をたくさん助けたまた、Google

を組織上の検索は、あなたが

+0

残念ながら、bashについて言えば、インターネットは悪い例と悪い習慣でいっぱいです。私はbashについての情報を見ているときに、Googleが最悪の友人だと言いたい。 –

関連する問題