Dane
1 \begin{document} 3
Kod
#!/bin/bash function getStart { local START="$(awk "/begin\{document\}/{ print NR; exit }" data.tex)" echo $START } START2=$(getStart) echo $START2
co zwraca 2
, ale chcę 3
. Bezskutecznie zmieniam koniec na tę odpowiedź na temat Jak mogę dodać liczby w skrypcie basha :
START2=$((getStart+1))
Jak można zwiększyć lokalną zmienną w skrypcie Bash?
Komentarze
Odpowiedź
Otrzymuję 2
z kodu. Niemniej jednak możesz użyć tej samej techniki dla dowolnej zmiennej lub liczby:
local start=1 (( start++ ))
lub
(( ++start ))
lub
(( start += 1 ))
lub
(( start = start + 1 ))
lub po prostu
local start=1 echo $(( start + 1 ))
itd.
Komentarze
- Może to również pomóc: askubuntu.com/questions/385528/…
Odpowiedź
Spróbuj:
START2=$(( `getStart` + 1 ));
$(( ))
mówi bashowi, że ma wykonać operację arytmetyczną, podczas gdy lewy apostrof mówi bashowi, aby obliczył zawarte w nim wyrażenie, be i t funkcja zdefiniowana przez użytkownika lub wywołanie programu zewnętrznego i zwraca zawartość standardowego wyjścia.
Odpowiedź
To jest bezpieczny zakład
(( start = start + 1 ))
Jeśli wynikowa wartość jest różna od zera, ustawienie wyjścia w przypadku błędu zatrzyma Twój skrypt
set -e start=0 (( start++ )) echo You will never get here
awk
?sed -n '/begin{document}/{=;q}' data.text
znacznie krócej…}/{=;q}
to w odpowiedzi / komentarzu, proszę?