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 ha 3
. Jeg endrer uten hell slutten med dette svaret om Hvordan kan jeg legge til tall i et bash-skript :
START2=$((getStart+1))
Hvordan kan du øke en lokal variabel i Bash-skript?
Kommentarer
Svar
Jeg får 2
fra koden din. Likevel kan du bruke den samme teknikken for hvilken som helst variabel eller tall:
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å hjelpe: askubuntu.com/questions/385528/…
Svar
Prøv:
START2=$(( `getStart` + 1 ));
$(( ))
forteller bash at det er å utføre en aritmetisk operasjon, mens backticks ber bash å evaluere det inneholdende uttrykket, være i t en brukerdefinert funksjon eller et anrop til et eksternt program, og returner innholdet i stdout.
Svar
Dette er den sikre satsingen
(( start = start + 1 ))
Hvis den resulterende verdien ikke er null, vil innstillingen exit on error stoppe skriptet ditt
set -e start=0 (( start++ )) echo You will never get here
awk
?sed -n '/begin{document}/{=;q}' data.text
mye kortere …}/{=;q}
dette i et svar / kommentar, vær så snill?