Da maneira que você escreveu o script, as alterações são feitas no arquivo de origem principal do C ++; Assim, na primeira vez que ele for executado, você substitui 30.0 por 30, e na segunda vez que ele é executado, o primeiro sed
não encontrará nada para substituir ...
O seguinte deve funcionar (também corrigindo o problema de citação):
#!/bin/bash
Rpl_array="30 60 90 120 150 180 210 240 270 300 330 360 390 420 450 480 510 540 570 600 630 660 690 720 750 780 810 840 870 900 930 960 1000"
parent_directory="execs_convergence_testing_corrected_robin_condition/phi_0/"
for rpl in ${Rpl_array}; do
sed -ie "s/R_pl_initial=30.0/R_pl_initial=${rpl}/g" iron_ablation_phi_nonzero_checking.cpp
sed -ie "s/Rpl_30/Rpl_${rpl}/g" iron_ablation_phi_nonzero_checking.cpp
g++ -std=c++0x iron_ablation_phi_nonzero_checking.cpp -o ${parent_directory}/Rpl_${rpl}.exe
sed -ie "s/R_pl_initial=${rpl}/R_pl_initial=30.0/g" iron_ablation_phi_nonzero_checking.cpp
sed -ie "s/Rpl_${rpl}/Rpl_30/g" iron_ablation_phi_nonzero_checking.cpp
done
Existem outras maneiras de fazer isso; você poderia usar um arquivo C ++ temporário e compilá-lo.