Как увеличить локальную переменную в 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?

Лео Леопольд Герц 준영
источник
Я получаю 2, а не 1, из кода.
Чороба
Извините моя ошибка!
Лео Леопольд Герц 준영
1
ВЫКЛ: почему awk? sed -n '/begin{document}/{=;q}' data.textнамного короче…
Костас
@ Костас Да, вы правы! У меня сегодня был плохой день, чтобы думать слишком сложно. Подумайте сейчас, что здесь за открытые интервалы: unix.stackexchange.com/q/229060/16920 Можете ли вы объяснить }/{=;q}это в ответе / комментарии, пожалуйста?
Лео Леопольд Герц 준영

Ответы:

35

Я получаю 2из вашего кода. Тем не менее, вы можете использовать ту же технику для любой переменной или числа:

local start=1
(( start++ ))

или

(( ++start ))

или

(( start += 1 ))

или

(( start = start + 1 ))

или просто

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

и т.п.

choroba
источник
Это также может помочь: askubuntu.com/questions/385528/…
Бруно
3

Пытаться:

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

Команда $(( ))bash сообщает, что она должна выполнить арифметическую операцию, в то время как обратные метки говорят bash, что нужно вычислить содержащее выражение, будь то пользовательская функция или вызов внешней программы, и вернуть содержимое stdout.

SpaghettiCoder
источник