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

データ

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スクリプトでローカル変数をインクリメントするにはどうすればよいですか?

コメント

  • I 'コードから1ではなく2を取得しています。
  • 申し訳ありませんが!
  • オフ:なぜawksed -n '/begin{document}/{=;q}' data.textはるかに短い…
  • @Costasはい、その通りです。私は今日、あまりにも複雑な考えで悪い日を過ごしました。ここでオープンインターバルについて考えてみましょう: unix.stackexchange.com/q/229060/16920 }/{=;q}これを回答/コメントでお願いしますか?

回答

です。それでも、任意の変数または数値に同じ手法を使用できます:

local start=1 (( start++ )) 

または

(( ++start )) 

または

(( start += 1 )) 

または

(( start = start + 1 )) 

または単に

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

など

コメント

回答

試してみてください:

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

$(( ))はbashに算術演算を実行するように指示し、バックティックはbashに含まれる式を評価するように指示します。 tユーザー定義関数または外部プログラムの呼び出しを行い、stdoutの内容を返します。

回答

これは安全な賭け

(( start = start + 1 )) 

結果の値がゼロ以外の場合、エラー時に終了を設定するとスクリプトが停止します

set -e start=0 (( start++ )) echo You will never get here 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です