Date
1 \begin{document} 3
Cod
#!/bin/bash function getStart { local START="$(awk "/begin\{document\}/{ print NR; exit }" data.tex)" echo $START } START2=$(getStart) echo $START2
care returnează 2
dar vreau 3
. Schimb fără succes sfârșitul prin acest răspuns despre Cum pot adăuga numere într-un script bash :
START2=$((getStart+1))
Cum puteți incrementa o variabilă locală în scriptul Bash?
Comentarii
Răspundeți
Îmi este 2
din codul dvs. Cu toate acestea, puteți utiliza aceeași tehnică pentru orice variabilă sau număr:
local start=1 (( start++ ))
sau
(( ++start ))
sau
(( start += 1 ))
sau
(( start = start + 1 ))
sau doar
local start=1 echo $(( start + 1 ))
etc.
Comentarii
- Acest lucru vă poate ajuta, de asemenea: askubuntu.com/questions/385528/…
Răspuns
Încercați:
START2=$(( `getStart` + 1 ));
$(( ))
spune bash că este să efectueze o operație aritmetică, în timp ce backticks îi spune lui bash să evalueze expresia conținută, fie i t o funcție definită de utilizator sau un apel către un program extern și returnează conținutul stdout.
Răspuns
Acesta este pariul sigur
(( start = start + 1 ))
Dacă valoarea rezultată este diferită de zero, setarea ieșirii la eroare va opri scriptul dvs.
set -e start=0 (( start++ )) echo You will never get here
awk
?sed -n '/begin{document}/{=;q}' data.text
mult mai scurt …}/{=;q}
asta într-un răspuns / comentariu, vă rog?