バッシュでローカル変数をインクリメントする方法は?


13

データ

1
\begin{document}
3

コード

#!/bin/bash

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

START2=$(getStart)
echo $START2

戻ります2が欲しいです3。私はbashスクリプトに数値を追加するにはどうすればよいかについてのこの答えによって失敗に終わりました:

START2=$((getStart+1))

Bashスクリプトでローカル変数をインクリメントするにはどうすればよいですか?


コードから1ではなく2を取得しています。
チョロバ2015

すみません、私の間違いです!
レオ・レオポルド・ヘルツ준 영

1
オフ:なぜawkですか?sed -n '/begin{document}/{=;q}' data.textはるかに短い…
Costas

@Costasはい、そうです!私は今日、あまりにも複雑に考えるのに悪い日を過ごしました。ここでオープンインターバルのことを考えてみましょう:unix.stackexchange.com/q/229060/16920}/{=;q}これを回答/コメントで説明できますか?
レオ・レオポルド・ヘルツ준 영

回答:


37

私は2あなたのコードから得ています。それでも、任意の変数または数値に同じ手法を使用できます。

local start=1
(( start++ ))

または

(( ++start ))

または

(( start += 1 ))

または

(( start = start + 1 ))

あるいは単に

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



3

試してください:

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

$(( ))バッククォートを含む式を評価することは、ユーザ定義関数、または外部プログラムの呼び出しであること、およびSTDOUTの内容を返すためにはbashに指示しながら、それは、算術演算を実行することであることはbashを伝えます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.