Oto mój skrypt:
#!/bin/bash
SOL_atom_index=116101
number=1
SOL_mol_index=SOL$number
index=1
for index in {1..100}
do
for SOL_index in {116101..136845}
do
sed -i "s/$SOL_atom_index/$SOL_mol_index/g;s/$(($SOL_atom_index+1))/$SOL_mol_index/g;s/$(($SOL_atom_index+2))/$SOL_mol_index/g" eq2_8_new_$index.ndx
SOL_atom_index=$(($SOL_atom_index+3))
number=$(($number+1))
SOL_mol_index=SOL$number
done
done
Mam wiele plików, na których chciałbym, żeby działał: eq2_8_new_1.ndx, eq2_8_new_2.ndx, ...... eq2_8_new_100.ndx
Próbuję go użyć na wielu plikach, tak aby ni musiał go wklepywać 100 razy i zmieniać, używam zmiennej "index" and pętli for, więc oczekuję, że ta część kodu będzie działać na każdym pliku
for SOL_index in {116101..136845}
do
sed -i "s/$SOL_atom_index/$SOL_mol_index/g;s/$(($SOL_atom_index+1))/$SOL_mol_index/g;s/$(($SOL_atom_index+2))/$SOL_mol_index/g" eq2_8_new_$index.ndx
SOL_atom_index=$(($SOL_atom_index+3))
number=$(($number+1))
SOL_mol_index=SOL$number
done
Widzicie to? Tutaj używam seda, który działa na kolejne pliki w pętli (na końcu linii mam eq2_8_new_$index.ndx
sed -i "s/$SOL_atom_index/$SOL_mol_index/g;s/$(($SOL_atom_index+1))/$SOL_mol_index/g;s/$(($SOL_atom_index+2))/$SOL_mol_index/g" eq2_8_new_$index.ndx
Więc jeśli używam for loop (for index in {1..100}) to oczekuję, że to będzie działać na każdym kolejnym pliku od eq2_8_new_1.ndx do eq2_8_new_100.ndx
ALE mój skrypt zmienia tylko pierwszy plik (eq2_8_new_1.ndx i nie ma zmian w kolejnych).