Bash sed替换为变量

Bash sed替换为变量,bash,replace,sed,Bash,Replace,Sed,我想用给定ie变量n1的正确计算值(以弧度为单位)替换一行,该行表示alpha=-pi/… #!/bin/bash read -p "Angle in degrees : " n1 ## Convert angle to radians printf -v "n2" "%.0f" $(echo | bc | awk "BEGIN {print 180/$n1}") echo "$n1 Degrees = pi/$n2" printf -v "n3" "alpha = -pi/$n2;"

我想用给定ie变量n1的正确计算值(以弧度为单位)替换一行,该行表示
alpha=-pi/…

#!/bin/bash

read -p "Angle in degrees : " n1

## Convert angle to radians

printf -v "n2" "%.0f" $(echo | bc | awk "BEGIN {print 180/$n1}")

echo "$n1 Degrees = pi/$n2"

printf -v "n3" "alpha = -pi/$n2;"

echo "${n3}"

cd /home/src/octave_scripts/makemesh_rot


sed  "s/alpha =.*/$n3/" makemesh_rot.m > makemesh_rot.m_temp

我环顾四周,尝试了一些变体,将
“s/alpha=.*/$n3/”
更改为
's/alpha=.*/“$n3/”
,还有一些其他方法,所有这些方法都是用
$n3
替换
α=-pi/…
,我经常这样做,如下所示:

sed -i -e "s/alpha = .*/alpha = ${n3}/g" makemesh_rot.m

-i
参数将直接替换内容,从而使临时文件过时。

正如前面的线程中所述,此顺序没有任何意义:
echo | bc | awk“BEGIN{print 180/$n1}”
。也许您应该将问题改为更精确的标题,因为您是使用bash标记发布的,这使得人们认为变量是bash变量,而不是八度脚本中的变量赋值。删除脚本中不需要的所有内容。原则上,您试图替换倍频程文件中的整行或变量赋值。对吗?所以它真的应该是
sed-i-e“s/alpha=.*/alpha=-pi\/${n2}/g”makemesh_rot.m
,但我仍然得到
sed:-e表达式#1,char 37:unterminated address regex
。谢谢它能解决你的问题吗,奥谢尔戈德曼?既然你是新来的,如果你的问题已经解决了,请别忘了把答案标为“接受”。您可以点击答案旁边的复选标记,将答案从空心切换为绿色。看看你有什么问题!