Bash에서 지역 변수를 증가시키는 방법은 무엇입니까?

데이터

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 스크립트에서 지역 변수를 어떻게 증가시킬 수 있습니까?

댓글

  • I ' 코드에서 1이 아닌 2를 얻었습니다.
  • 실수 죄송합니다!
  • OFF : 왜 awk? sed -n '/begin{document}/{=;q}' data.text 훨씬 짧아졌습니다…
  • @Costas 예, 맞습니다! 나는 오늘 너무 복잡한 생각에 나쁜 날을 보냈다. 이제 개방 간격에 대해 생각해보십시오. unix.stackexchange.com/q/229060/16920 설명 할 수 있습니까 }/{=;q} 답변 / 의견에 이것 좀 넣어 주시겠습니까?

답변

2. 그럼에도 불구하고 모든 변수 또는 숫자에 대해 동일한 기술을 사용할 수 있습니다.

local start=1 (( start++ )) 

또는

(( ++start )) 

또는

(( start += 1 )) 

또는

(( start = start + 1 )) 

또는

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

댓글

답변

시도 :

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

$(( ))는 bash에게 산술 연산을 수행하도록 지시하고 백틱은 bash에게 포함하는 표현식을 평가하도록 지시합니다. t 사용자 정의 함수 또는 외부 프로그램 호출 및 stdout의 내용을 반환합니다.

Answer

이것은 안전한 베팅

(( start = start + 1 )) 

결과 값이 0이 아닌 경우 오류시 종료를 설정하면 스크립트가 중지됩니다.

set -e start=0 (( start++ )) echo You will never get here 

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다