Bash'de yerel değişken nasıl artırılır?


13

Veri

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

ki geri dönüyor 2ama istiyorum 3. Nasıl bir bash betiğinde sayı ekleyebilirim hakkında bu cevabın sonunda başarısız bir şekilde değiştirmek :

START2=$((getStart+1))

Bash betiğinde yerel bir değişkeni nasıl artırabilirsiniz?


Koddan 2 değil, 1 alıyorum.
choroba

Üzgünüm, benim hatam!
Léo Léopold Hertz 준영

1
KAPALI: neden awk? sed -n '/begin{document}/{=;q}' data.textçok daha kısa…
Costas

@Costas Evet, haklısın! Bugün çok karmaşık düşünmek için kötü bir gün geçirdim. Şimdi burada açık aralıklar için bir şey düşünüyoruz: unix.stackexchange.com/q/229060/16920 Bunu }/{=;q}bir cevap / yorumda açıklayabilir misiniz , lütfen?
Léo Léopold Hertz 준영

Yanıtlar:


37

Kodundan alıyorum 2. Bununla birlikte, aynı tekniği herhangi bir değişken veya sayı için kullanabilirsiniz:

local start=1
(( start++ ))

veya

(( ++start ))

veya

(( start += 1 ))

veya

(( start = start + 1 ))

ya da sadece

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

vb.


Bu da yardımcı olabilir: askubuntu.com/questions/385528/…
Bruno Bieri

3

Deneyin:

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

$(( ))Bu backticks içeren ifadesi değerlendirmek onu bir kullanıcı tanımlı işlevi veya harici bir program için bir çağrı olacak ve standart çıktıya içeriğini geri Bash anlatır iken, bir aritmetik işlem gerçekleştirmek için olduğu deneme anlatır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.