データ
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スクリプトでローカル変数をインクリメントするにはどうすればよいですか?
コメント
回答
です。それでも、任意の変数または数値に同じ手法を使用できます:
local start=1 (( start++ ))
または
(( ++start ))
または
(( start += 1 ))
または
(( start = start + 1 ))
または単に
local start=1 echo $(( start + 1 ))
など
コメント
- これも役立つ場合があります: askubuntu.com/questions/385528/ …
回答
試してみてください:
START2=$(( `getStart` + 1 ));
$(( ))
はbashに算術演算を実行するように指示し、バックティックはbashに含まれる式を評価するように指示します。 tユーザー定義関数または外部プログラムの呼び出しを行い、stdoutの内容を返します。
回答
これは安全な賭け
(( start = start + 1 ))
結果の値がゼロ以外の場合、エラー時に終了を設定するとスクリプトが停止します
set -e start=0 (( start++ )) echo You will never get here
awk
?sed -n '/begin{document}/{=;q}' data.text
はるかに短い…}/{=;q}
これを回答/コメントでお願いしますか?