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 , das 2 zurückgibt, aber ich möchte 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 inkrementieren?
Kommentare
- I ' Ich erhalte 2, nicht 1, aus dem Code.
- Entschuldigung, mein Fehler!
-  AUS: Warum awk?sed -n '/begin{document}/{=;q}' data.textviel kürzer …
-  @Costas Ja, Sie haben Recht! Ich hatte heute einen schlechten Tag damit, zu kompliziert zu denken. 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 / einem Kommentar?
Antwort
 Ich erhalte 2 aus Ihrem Code. Sie können jedoch dieselbe Technik für jede Variable oder Zahl verwenden: 
local start=1 (( start++ )) oder
(( ++start )) oder
(( start += 1 )) oder
(( start = start + 1 )) oder nur
local start=1 echo $(( start + 1 )) usw.
Kommentare
- Dies kann auch hilfreich sein: askubuntu.com/questions/385528/…
Antwort
Versuchen Sie:
START2=$(( `getStart` + 1 ));  Die $(( )) teilt bash mit, dass eine arithmetische Operation ausgeführt werden soll, während die Backticks bash anweisen, den enthaltenen Ausdruck auszuwerten, sei i t eine benutzerdefinierte Funktion oder einen Aufruf eines externen Programms und geben Sie den Inhalt von stdout zurück. 
Antwort
Dies ist die sichere Wette
(( start = start + 1 )) Wenn der resultierende Wert ungleich Null ist, stoppt das Setzen von exit bei Fehler Ihr Skript
set -e start=0 (( start++ )) echo You will never get here