Dati
1 \begin{document} 3
Codice
#!/bin/bash function getStart { local START="$(awk "/begin\{document\}/{ print NR; exit }" data.tex)" echo $START } START2=$(getStart) echo $START2
che restituisce 2
ma voglio 3
. Ho cambiato senza successo la fine con questa risposta su Come posso aggiungere numeri in uno script bash :
START2=$((getStart+1))
Come puoi incrementare una variabile locale nello script Bash?
Commenti
Risposta
Sto ottenendo 2
dal codice. Tuttavia, puoi utilizzare la stessa tecnica per qualsiasi variabile o numero:
local start=1 (( start++ ))
o
(( ++start ))
o
(( start += 1 ))
o
(( start = start + 1 ))
o semplicemente
local start=1 echo $(( start + 1 ))
ecc.
Commenti
- Questo può anche aiutare: askubuntu.com/questions/385528/…
Risposta
Prova:
START2=$(( `getStart` + 1 ));
Il $(( ))
dice a bash che deve eseguire unoperazione aritmetica, mentre i backtick dicono a bash di valutare lespressione contenitore, essere i t una funzione definita dallutente o una chiamata a un programma esterno e restituisce il contenuto di stdout.
Answer
Questo è la scommessa sicura
(( start = start + 1 ))
Se il valore risultante è diverso da zero, limpostazione di uscita in caso di errore interromperà lo script
set -e start=0 (( start++ )) echo You will never get here
awk
?sed -n '/begin{document}/{=;q}' data.text
molto più breve…}/{=;q}
questo in una risposta / commento, per favore?