Як збільшити локальну змінну в 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, з коду.
choroba

Вибачте за мою помилку!
Лео Леопольд Герц 준영

1
OFF: чому awk? sed -n '/begin{document}/{=;q}' data.textнабагато коротше…
Costas

@Costas Так, ви праві! У мене сьогодні був поганий день, коли мислення надто складне. Думаю, що тут справа в відкритих інтервалах: unix.stackexchange.com/q/229060/16920 Чи можете ви пояснити }/{=;q}це у відповіді / коментарі, будь ласка?
Лео Леопольд Герц 준영

Відповіді:


37

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

local start=1
(( start++ ))

або

(( ++start ))

або

(( start += 1 ))

або

(( start = start + 1 ))

або просто

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

тощо.


Це також може допомогти: askubuntu.com/questions/385528/…
Бруно

3

Спробуйте:

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.