sed が無効な算術演算子エラーを発生させます。

sed が無効な算術演算子エラーを発生させます。

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二重引用符で囲む必要があります。

(( 算術演算を評価する複合命令です。だから、好きなようにはなりません。

おすすめ記事