
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 )
私は基本的なものを見逃していると確信しています。仕事中にシェルスクリプトを学ぶ:(
答え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
二重引用符で囲む必要があります。
((
算術演算を評価する複合命令です。だから、好きなようにはなりません。