¿Cómo incrementar la variable local en Bash?

13

Datos

1
\begin{document}
3

Código

#!/bin/bash

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

START2=$(getStart)
echo $START2

que vuelve 2pero quiero 3. Cambio sin éxito el final con esta respuesta sobre ¿Cómo puedo agregar números en un script bash :

START2=$((getStart+1))

¿Cómo puede incrementar una variable local en el script Bash?

Léo Léopold Hertz 준영
fuente
Estoy obteniendo 2, no 1, del código.
choroba
¡Perdón mi error!
Léo Léopold Hertz 준영
1
OFF: ¿por qué awk? sed -n '/begin{document}/{=;q}' data.textmucho más corto ...
Costas
@Costas ¡Sí, tienes razón! Hoy he tenido un mal día pensando demasiado complicado. Pensando ahora en lo que está aquí para intervalos abiertos: unix.stackexchange.com/q/229060/16920 ¿Puede explicar }/{=;q}esto en una respuesta / comentario, por favor?
Léo Léopold Hertz 준영

Respuestas:

35

Estoy obteniendo 2de tu código. Sin embargo, puede usar la misma técnica para cualquier variable o número:

local start=1
(( start++ ))

o

(( ++start ))

o

(( start += 1 ))

o

(( start = start + 1 ))

o solo

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

etc.

choroba
fuente
Esto también puede ayudar: askubuntu.com/questions/385528/…
Bruno Bieri
3

Tratar:

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

El programa $(( ))le dice a bash que debe realizar una operación aritmética, mientras que los backticks le dicen a bash que evalúe la expresión que lo contiene, ya sea una función definida por el usuario o una llamada a un programa externo, y que devuelva el contenido de stdout.

SpaghettiCoder
fuente