Tiedot
1 \begin{document} 3
Koodi
#!/bin/bash function getStart { local START="$(awk "/begin\{document\}/{ print NR; exit }" data.tex)" echo $START } START2=$(getStart) echo $START2
joka palauttaa 2
, mutta haluan 3
. Muutan loppua epäonnistuneesti tällä vastauksella noin miten voin lisätä lukuja bash-komentosarjaan :
START2=$((getStart+1))
Kuinka voit lisätä paikallista muuttujaa Bash-komentosarjassa?
Kommentit
Vastaa
Saan 2
koodistasi. Voit kuitenkin käyttää samaa tekniikkaa mille tahansa muuttujalle tai numerolle:
local start=1 (( start++ ))
tai
(( ++start ))
tai
(( start += 1 ))
tai
(( start = start + 1 ))
tai vain
local start=1 echo $(( start + 1 ))
jne.
Kommentit
- Tämä voi myös auttaa: askubuntu.com/questions/385528/…
vastaus
Yritä:
START2=$(( `getStart` + 1 ));
$(( ))
kertoo bashille, että sen on suoritettava aritmeettinen operaatio, kun taas backticks käskee bashia arvioimaan sisältävän lausekkeen, i t käyttäjän määrittelemä toiminto tai kutsu ulkoiselle ohjelmalle ja palauta stdoutin sisältö.
Vastaa
Tämä on turvallinen veto
(( start = start + 1 ))
Jos tuloksena oleva arvo ei ole nolla, poistumisvirheen asettaminen virheen lopettaa komentosarjan
set -e start=0 (( start++ )) echo You will never get here
awk
?sed -n '/begin{document}/{=;q}' data.text
paljon lyhyempi …}/{=;q}
tämä vastauksessa / kommentissa, kiitos?