parash
parash

Reputation: 51

bash script for creating multiple files using forloop

I am brand new at bash script. I want to write a script using forloop which will give me the following line and execute also these lines.

gmx trjconv -f md_0_1.xtc -s md_0_1.tpr -b 1000 -e 10000 -skip 10 -o 1.out
gmx trjconv -f md_0_1.xtc -s md_0_1.tpr -b 2000 -e 20000 -skip 10 -o 2.out
gmx trjconv -f md_0_1.xtc -s md_0_1.tpr -b 3000 -e 30000 -skip 10 -o 3.out
gmx trjconv -f md_0_1.xtc -s md_0_1.tpr -b 4000 -e 40000 -skip 10 -o 4.out
gmx trjconv -f md_0_1.xtc -s md_0_1.tpr -b 5000 -e 50000 -skip 10 -o 5.out
gmx trjconv -f md_0_1.xtc -s md_0_1.tpr -b 6000 -e 60000 -skip 10 -o 6.out
gmx trjconv -f md_0_1.xtc -s md_0_1.tpr -b 7000 -e 70000 -skip 10 -o 7.out

....

Upvotes: 0

Views: 237

Answers (3)

Ulysse BN
Ulysse BN

Reputation: 11423

Using a basic bash for loop:

for i in {1..7}; do
  gmx trjconv -f md_0_1.xtc -s md_0_1.tpr -b ${i}000 -e ${i}0000 -skip 10 -o $i.out
done

Upvotes: 1

Mark Setchell
Mark Setchell

Reputation: 208043

You can also save a couple of lines of typing and get them all done in parallel with GNU Parallel:

parallel gmx trjconv -f md_0_1.xtc -s md_0_1.tpr -b {}000 -e {}0000 -skip 10 -o {}.out ::: {1..7}

Use parallel --dry-run if you want to see what it would do but without actually doing anything.

Upvotes: 4

David C. Rankin
David C. Rankin

Reputation: 84642

You can use a C-style loop as well, e.g.

for ((i = 1; i < 8; i++)); do
    echo "gmx trjconv -f md_0_1.xtc -s md_0_1.tpr -b $((i * 1000)) -e $((i * 10000)) -skip 10 -o $i.out"
done

Example Use/Output

$ for ((i = 1; i < 8; i++)); do
>     echo "gmx trjconv -f md_0_1.xtc -s md_0_1.tpr -b $((i * 1000)) -e $((i * 10000)) -skip 10 -o $i.out"
> done
gmx trjconv -f md_0_1.xtc -s md_0_1.tpr -b 1000 -e 10000 -skip 10 -o 1.out
gmx trjconv -f md_0_1.xtc -s md_0_1.tpr -b 2000 -e 20000 -skip 10 -o 2.out
gmx trjconv -f md_0_1.xtc -s md_0_1.tpr -b 3000 -e 30000 -skip 10 -o 3.out
gmx trjconv -f md_0_1.xtc -s md_0_1.tpr -b 4000 -e 40000 -skip 10 -o 4.out
gmx trjconv -f md_0_1.xtc -s md_0_1.tpr -b 5000 -e 50000 -skip 10 -o 5.out
gmx trjconv -f md_0_1.xtc -s md_0_1.tpr -b 6000 -e 60000 -skip 10 -o 6.out
gmx trjconv -f md_0_1.xtc -s md_0_1.tpr -b 7000 -e 70000 -skip 10 -o 7.out

Upvotes: 1

Related Questions