#!/bin/bash
path_initial_case="/home/frederickthegreat/Desktop/Working Airfoil OpenFoam/Airfoil2D/"
path_output="/home/frederickthegreat/Desktop/"
initialvarray=(51 0 0)
angles=(0 2 4 6)
numberofcases=${#angles[*]}
velocity=30
i=0
pi=3.14159
while [ $i -lt $numberofcases ]
do
currentcase=${angles[i]}
echo "$currentcase case"
rad=$(bc -l <<< "scale=5; ($currentcase * $pi) / 180")
echo "$rad rad "
xcomp=$(bc -l <<< "scale=5; c(($currentcase * $pi) / 180) * ($velocity)")
echo "$xcomp x"
ycomp=$(bc -l <<< "scale=5; s(($currentcase * $pi) / 180) * ($velocity)")
echo "$ycomp y"
finalvarray=($xcomp $ycomp 0)
echo ${finalvarray[@]}
mkdir "Angle $currentcase"
mkdir "Angle $currentcase"/"system"
cp -r "${path_initial_case}"/"system/"* "${path_output}""Angle $currentcase"/"system"
mkdir "Angle $currentcase"/"0"
cp -r "${path_initial_case}"/"0/"* "${path_output}""Angle $currentcase"/"0"
sed -i "s/${initialvarray}/${finalvarray}/g" "${path_output}""Angle $currentcase"/"0/U"
mkdir "Angle $currentcase"/"constant"
cp "${path_initial_case}"/"constant/"* "${path_output}""Angle $currentcase"/"constant"
ln -s "$path_initial_case""constant/polyMesh" "${path_output}""Angle $currentcase"/"constant"
((i++))
echo "$i i"
done
В этом сценарии команда sed используется для замены массива в другом документе. Начальный массив определяется как initialvarray
. Окончательный массив, finalvarray
, для которого он заменяется, вычисляется внутри l oop. Проблема в том, что в документе заменяется только первый элемент массива. Я хотел бы, чтобы начальный массив был полностью заменен окончательным массивом ex. начальный массив (0 0 0), последний (1 1 1), и результат в документе должен быть (1 1 1).