# How to increment local variable in Bash?

Data

1
\begin{document}
3


Code

#!/bin/bash

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

START2=$(getStart) echo$START2


which returns 2 but I want 3. I change unsuccessfully the end by this answer about How can I add numbers in a bash script:

START2=$((getStart+1))  How can you increment a local variable in Bash script? • I'm getting 2, not 1, from the code. Sep 11 '15 at 13:03 • Sorry my mistake! Sep 11 '15 at 13:13 • OFF: why awk? sed -n '/begin{document}/{=;q}' data.text much shorter… Sep 11 '15 at 13:46 • @Costas Yes, you are right! I have had today a bad day in thinking too complicated. Thinking now the thing here for open intervals: unix.stackexchange.com/q/229060/16920 Can you explain }/{=;q} this in an answer/comment, please? Sep 11 '15 at 13:47 ## 3 Answers I'm getting 2 from your code. Nevertheless, you can use the same technique for any variable or number: local start=1 (( start++ ))  or (( ++start ))  or (( start += 1 ))  or (( start = start + 1 ))  or just local start=1 echo$(( start + 1 ))


etc.

Try:

START2=$(( getStart + 1 ));  The $(( )) tells bash that it is to perform an arithmetic operation, while the backticks tells bash to evaluate the containing expression, be it an user-defined function or a call to an external program, and return the contents of stdout.

This is the safe bet

(( start = start + 1 ))


If the resulting value is non zero, then setting exit on error will stop Your script

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