Bash sed替换为变量
我想用给定ie变量n1的正确计算值(以弧度为单位)替换一行,该行表示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;"
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
。谢谢它能解决你的问题吗,奥谢尔戈德曼?既然你是新来的,如果你的问题已经解决了,请别忘了把答案标为“接受”。您可以点击答案旁边的复选标记,将答案从空心切换为绿色。看看你有什么问题!