Gegevens
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
die 2
retourneert maar ik wil 3
. Ik verander het einde tevergeefs door dit antwoord over Hoe kan ik getallen toevoegen in een bash-script :
START2=$((getStart+1))
Hoe kun je een lokale variabele in het Bash-script verhogen?
Reacties
Antwoord
Ik “krijg 2
uit uw code. Desalniettemin kunt u dezelfde techniek gebruiken voor elke variabele of getal:
local start=1 (( start++ ))
of
(( ++start ))
of
(( start += 1 ))
of
(( start = start + 1 ))
of gewoon
local start=1 echo $(( start + 1 ))
etc.
Reacties
- Dit kan ook helpen: askubuntu.com/questions/385528/…
Antwoord
Probeer:
START2=$(( `getStart` + 1 ));
De $(( ))
vertelt bash dat het een rekenkundige bewerking moet uitvoeren, terwijl de backticks bash vertellen om de bevattende uitdrukking te evalueren, oftewel t een door de gebruiker gedefinieerde functie of een aanroep naar een extern programma, en retourneer de inhoud van stdout.
Answer
Dit is de veilige weddenschap
(( start = start + 1 ))
Als de resulterende waarde niet nul is, zal het instellen van exit on error uw script stoppen
set -e start=0 (( start++ )) echo You will never get here
awk
?sed -n '/begin{document}/{=;q}' data.text
veel korter …}/{=;q}
dit in een antwoord / opmerking, alstublieft?