Bagaimana cara meningkatkan variabel lokal di Bash?


13

Data

1
\begin{document}
3

Kode

#!/bin/bash

function getStart {
        local START="$(awk '/begin\{document\}/{ print NR; exit }' data.tex)"
        echo $START
}

START2=$(getStart)
echo $START2

yang kembali 2tetapi saya inginkan 3. Saya tidak berhasil mengubah akhirnya dengan jawaban ini tentang Bagaimana saya bisa menambahkan angka dalam skrip bash :

START2=$((getStart+1))

Bagaimana Anda bisa meningkatkan variabel lokal dalam skrip Bash?


Saya mendapatkan 2, bukan 1, dari kode.
choroba

Maaf kesalahan saya!
Léo Léopold Hertz 준영

1
OFF: mengapa awk? sed -n '/begin{document}/{=;q}' data.textjauh lebih pendek ...
Costas

@Costas Ya, Anda benar! Hari ini aku mengalami hari yang buruk dalam berpikir terlalu rumit. Berpikir sekarang hal di sini untuk interval terbuka: unix.stackexchange.com/q/229060/16920 Bisakah Anda menjelaskan }/{=;q}ini dalam jawaban / komentar, tolong?
Léo Léopold Hertz 준영

Jawaban:


35

Saya dapatkan 2dari kode Anda. Namun demikian, Anda dapat menggunakan teknik yang sama untuk variabel atau angka apa pun:

local start=1
(( start++ ))

atau

(( ++start ))

atau

(( start += 1 ))

atau

(( start = start + 1 ))

atau hanya

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

dll.



3

Mencoba:

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

The $(( ))memberitahu bash yang itu adalah untuk melakukan operasi aritmatika, sedangkan backticks mengatakan bash untuk mengevaluasi ekspresi yang mengandung, baik itu fungsi user-defined atau panggilan untuk program eksternal, dan kembali isi stdout.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.