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
큰따옴표로 묶어야 합니다 .
((
산술 연산을 평가하는 복합 명령입니다., 그래서 원하는 대로 되지 않습니다.