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.