Wie inkrementiere ich lokale Variablen in Bash?


13

Daten

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

was zurückkommt 2aber ich will 3. Ich ändere das Ende erfolglos durch diese Antwort über Wie kann ich Zahlen in ein Bash-Skript einfügen :

START2=$((getStart+1))

Wie können Sie eine lokale Variable im Bash-Skript erhöhen?


Ich erhalte 2, nicht 1 aus dem Code.
Choroba

Entschuldigung, mein Fehler!
Léo Léopold Hertz 준영

1
AUS: warum awk? sed -n '/begin{document}/{=;q}' data.textviel kürzer ...
Costas

@Costas Ja, du hast recht! Ich hatte heute einen schlechten Tag im Denken zu kompliziert. Denken Sie jetzt die Sache hier für offene Intervalle: unix.stackexchange.com/q/229060/16920 Können Sie }/{=;q}dies bitte in einer Antwort / Kommentar erklären ?
Léo Léopold Hertz 준영

Antworten:


35

Ich bekomme 2von Ihrem Code. Trotzdem können Sie dieselbe Technik für jede Variable oder Zahl anwenden:

local start=1
(( start++ ))

oder

(( ++start ))

oder

(( start += 1 ))

oder

(( start = start + 1 ))

oder nur

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

etc.



3

Versuchen:

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

Die $(( ))Tells-Bash weist die Bash an, eine arithmetische Operation auszuführen, während die Backticks die Bash anweisen, den enthaltenen Ausdruck auszuwerten, sei es eine benutzerdefinierte Funktion oder ein Aufruf eines externen Programms, und den Inhalt von stdout zurückzugeben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.