Bash
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 )
我很確定我缺少一些基本的東西。在工作中學習 shell 腳本:(
在你的指揮下
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
應該用雙引號括起來。
((
是評估算術運算的複合命令,因此它沒有按照您的意圖進行。