Data
1 \begin{document} 3
Kode
#!/bin/bash function getStart { local START="$(awk "/begin\{document\}/{ print NR; exit }" data.tex)" echo $START } START2=$(getStart) echo $START2
som returnerer 2
men jeg vil have 3
. Jeg ændrer uden held slutningen med dette svar om Hvordan kan jeg tilføje tal i et bash-script :
START2=$((getStart+1))
Hvordan kan du øge en lokal variabel i Bash-script?
Kommentarer
Svar
Jeg får 2
fra din kode. Ikke desto mindre kan du bruge den samme teknik til enhver variabel eller nummer:
local start=1 (( start++ ))
eller
(( ++start ))
eller
(( start += 1 ))
eller
(( start = start + 1 ))
eller bare
local start=1 echo $(( start + 1 ))
osv.
Kommentarer
- Dette kan også hjælpe: askubuntu.com/questions/385528/…
Svar
Prøv:
START2=$(( `getStart` + 1 ));
$(( ))
fortæller bash, at det er at udføre en aritmetisk operation, mens backticks fortæller bash at evaluere det indeholdende udtryk, være i t en brugerdefineret funktion eller et opkald til et eksternt program, og returner indholdet af stdout.
Svar
Dette er den sikre indsats
(( start = start + 1 ))
Hvis den resulterende værdi ikke er nul, stopper indstillingen af exit på fejl Dit script
set -e start=0 (( start++ )) echo You will never get here
awk
?sed -n '/begin{document}/{=;q}' data.text
meget kortere …}/{=;q}
dette i et svar / en kommentar, tak?