C++ ファイルで Bash を検索して置換する

C++ ファイルで Bash を検索して置換する

特定の場所で変数の値を変更し、それをコンパイルして一連の数値に対して複数回実行したいC ++スクリプトがあります。私のシェルスクリプトは次のとおりです。

#!/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
    done

ご覧のとおり、変数のsed 値を最初に変更してから、文字列を変更しようとして2回使用しています。次に変更をコンパイルし、rplのすべての値を実行します。しかし、このコードは私には適していません。何が間違っているのか疑問に思います。

ベストアンサー1

スクリプトを書いた方法でデフォルトのC ++ソースファイルを変更しました。したがって、最初の実行では30.0を30に置き換え、2番目の実行では置き換えるsed内容を見つけることができません。 ..

以下が機能します(引用の問題も解決しました)。

#!/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

この問題を解決する別の方法があります。一時 C++ ファイルを使用してコンパイルできます。

おすすめ記事