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큰따옴표로 묶어야 합니다 .

(( 산술 연산을 평가하는 복합 명령입니다., 그래서 원하는 대로 되지 않습니다.

관련 정보