Bash에서 지역 변수를 늘리는 방법은 무엇입니까?


13

데이터

1
\begin{document}
3

암호

#!/bin/bash

function getStart {
        local START="$(awk '/begin\{document\}/{ print NR; exit }' data.tex)"
        echo $START
}

START2=$(getStart)
echo $START2

어느 것이 반환 2하지만 원합니다 3. 나는 bash 스크립트에 숫자를 어떻게 추가 할 수 있는지 에 대한 이 답변으로 실패를 바꿨습니다 .

START2=$((getStart+1))

Bash 스크립트에서 로컬 변수를 어떻게 증가시킬 수 있습니까?


코드에서 1이 아닌 2를 얻고 있습니다.
choroba

내 실수 미안해!
Léo Léopold Hertz 준영

1
OFF : 왜 awk? sed -n '/begin{document}/{=;q}' data.text훨씬 짧은…
Costas

@ 코스타 네, 맞습니다! 나는 오늘 너무 복잡한 생각에 나쁜 하루를 보냈습니다. 열린 간격에 대해 여기서 생각하면 다음과 같습니다. unix.stackexchange.com/q/229060/16920 이에}/{=;q} 대한 답변 / 댓글로 설명해 주시겠습니까?
Léo Léopold Hertz 준영

답변:


36

나는 2당신의 코드에서 얻고 있습니다. 그럼에도 불구하고 모든 변수 또는 숫자에 동일한 기술을 사용할 수 있습니다.

local start=1
(( start++ ))

또는

(( ++start ))

또는

(( start += 1 ))

또는

(( start = start + 1 ))

아니면 그냥

local start=1
echo $(( start + 1 ))

기타



3

시험:

START2=$(( `getStart` + 1 ));

$(( ))괄호는 산술 연산을 수행하는 것으로 bash에게 알려주고, 백틱은 bash가 포함 표현식을 평가하도록 지시합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.