私はsedを使用して、ファイル内(変数名にちなんで名付けられた)プレースホルダを置き換えることができます。代替シェル変数の参照
と$clientId = '${ID}';
$clientSecret = '${SECRET}';
:
ID="toto"
SECRET="tata"
sed -i -e "s/\${ID}/$ID/" -e "s/\${SECRET}/$SECRET/" $file
それは、この置き換えを
$clientId = 'toto';
$clientSecret = 'tata';
私は引数を使用してループを介してこの作業をしようとしています:
ID="toto"
SECRET="tata"
OTHER="franck"
./config.sh $file $ID $SECRET $OTHER
config.sh
for var in "${@:2}"; do
echo "$var" # toto or tata or franck
echo $!{var} # always var whatever I try, would like ID or {SECRET} or ${OTHER}
SETTINGS="$SETTINGS -e "s/\${var}/$var/"" # so this has no effect
done
FILE=$1
sed -i $SETTINGS $FILE
素晴らしいです、ありがとうございます。 – kursus
'sed'コマンドは' $ sed_expr'が期待どおりに動作していてもスクリプト内で動作しませんが、 'sed:-e expression#1、char 2:unknown command:' -''を取得します。ターミナルで全く同じ出力コマンドを実行すると、期待どおりに動作します。これについての考えは? – kursus
シングルクォート、 'e'オプションを削除し、ループ内で' sed'コマンドを実行することで解決しました。ありがとうございました。 – kursus