[英]bash replace string with floating variable
我試圖用bash文件中計算出的浮動變量替換文件中的數字。 因此,我嘗試用“ km”的值替換1.1111並將其保存在mesh.in文件中。 我在sed線上不斷收到錯誤,我認為浮動變量可能存在問題。 回聲“ $ km”確實有效,所以我知道km不是問題
#!/bin/bash
read -p "Angle in degrees : " n1
read -p "bcsa : " n2
cd viv_example_se2d
sed s/^bcsa.\*/"bcsa $n2"/ runfile.viv >temp
mv -f temp runfile.viv
cd ../
for i in $(seq 2 0.5 12)
do
if [ ! -d U*_$i ];then
mkdir U*_$i
fi
printf -v "km" "%.4f\n" $(echo | bc | awk "BEGIN {print 4*3.14159265359*3.14159265359/($i*$i)}")
echo "$km"
cd viv_example_se2d
sed s/1.1111/$km/g mesh_master.in > temp$i
mv -f temp$i mesh.in
cd ../
echo $home/lustre/projects/p057_swin/ogoldman/Ellipse_$n1/U*_$i | xargs -n 1 cp viv_example_se2d/*
done;
問題是$km
的值中的換行符。 sed
令人困惑。
話雖如此,該腳本也有些混亂。
使用變量時應加引號,以防止出現空格和值中的全局字符問題。
你不需要xargs
給cp
,你可以通過水珠展開多個文件。 cp
樂意將多個文件直接復制。 (哦,還是將多個文件復制到通過該glob生成的目錄中?)
您有沒有用的echo | bc |
echo | bc |
awk
命令附近的位。
在sed
/ etc中使用完整/相對路徑。 通常比cd
周圍更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.