Data
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
som returnerar 2
men jag vill 3
. Jag ändrar framgångsrikt slutet med detta svar om Hur kan jag lägga till siffror i ett bash-skript :
START2=$((getStart+1))
Hur kan du öka en lokal variabel i Bash-skript?
Kommentarer
Svar
Jag får 2
från din kod. Ändå kan du använda samma teknik för alla variabler eller tal:
local start=1 (( start++ ))
eller
(( ++start ))
eller
(( start += 1 ))
eller
(( start = start + 1 ))
eller bara
local start=1 echo $(( start + 1 ))
etc.
Kommentarer
- Detta kan också hjälpa: askubuntu.com/questions/385528/…
Svar
Försök:
START2=$(( `getStart` + 1 ));
$(( ))
säger till bash att det är att utföra en aritmetisk operation, medan backticks ber bash att utvärdera det innehållande uttrycket, vara i t en användardefinierad funktion eller ett samtal till ett externt program och returnera innehållet i stdout.
Svar
Detta är den säkra satsningen
(( start = start + 1 ))
Om det resulterande värdet inte är noll, stoppar inställningen exit on error Ditt skript
set -e start=0 (( start++ )) echo You will never get here
awk
?sed -n '/begin{document}/{=;q}' data.text
mycket kortare …}/{=;q}
detta i ett svar / kommentar, snälla?