簡體   English   中英

bash用浮動變量替換字符串

[英]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令人困惑。

話雖如此,該腳本也有些混亂。

使用變量時應加引號,以防止出現空格和值中的全局字符問題。

你不需要xargscp ,你可以通過水珠展開多個文件。 cp樂意將多個文件直接復制。 (哦,還是將多個文件復制到通過該glob生成的目錄中?)

您有沒有用的echo | bc | echo | bc | awk命令附近的位。

sed / etc中使用完整/相對路徑。 通常比cd周圍更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM