web-dev-qa-db-fra.com

Comment incrémenter une variable locale dans Bash?

Les données

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

qui renvoie 2 mais je veux 3. Je change sans succès la fin par ceci réponse à propos Comment puis-je ajouter des nombres dans un script bash :

START2=$((getStart+1))

Comment pouvez-vous incrémenter une variable locale dans le script Bash?

Je suis en train 2 à partir de votre code. Néanmoins, vous pouvez utiliser la même technique pour n'importe quelle variable ou nombre:

local start=1
(( start++ ))

ou

(( ++start ))

ou

(( start += 1 ))

ou

(( start = start + 1 ))

ou juste

local start=1
echo $(( start + 1 ))

etc.

37
choroba

Essayer:

START2=$(( `getStart` + 1 ));

La $(( )) indique à bash qu'elle doit effectuer une opération arithmétique, tandis que les astuces indiquent à bash d'évaluer l'expression contenant, que ce soit une fonction définie par l'utilisateur ou un appel à un programme externe, et renvoyer le contenu de stdout.

3
SpaghettiCoder