sed
不断给出无效算术运算符错误。我试图将 sed 的输出分配给一个变量。
这个有效,
var=$(sed -e 's/"currentGeneration":5010/"currentGeneration":5011/' <<< $content )
但是当我尝试对变量而不是 5010 和 5011 执行相同操作时,它会因算术运算符无效而失败
var=$((sed -e 's/"currentGeneration":$currg/"currentGeneration":$nextg/' <<< $content ))
我也在下面尝试过,但它不能替代任何东西。
var=$(sed -e 's/"currentGeneration":$currg/"currentGeneration":$nextg/' <<< $content )
我很确定我错过了一些基本的东西。在工作中学习 shell 脚本:(
答案1
在你的命令下
var=$(sed -e 's/"currentGeneration":$currg/"currentGeneration":$nextg/' <<< $content )
$currg
并且$nextg
没有展开因为它们不在双引号之间。
为了避免这个问题,您有几个选择:
使用
sed
双引号括起来并转义内部双引号:$ var=$(sed -e "s/\"currentGeneration\":$currg/\"currentGeneration\":$nextg/" <<< "$content" )
连接单引号和双引号:
$ var=$(sed -e 's/"currentGeneration":'"$currg"'/"currentGeneration":'"$nextg/" <<< "$content" )
请注意,$content
应该用双引号引起来。
((
是评估算术运算的复合命令,所以它没有做你想做的事。