Data
1 \begin{document} 3
Kód
#!/bin/bash function getStart { local START="$(awk "/begin\{document\}/{ print NR; exit }" data.tex)" echo $START } START2=$(getStart) echo $START2
který vrací 2
, ale chci 3
. Konec neúspěšně změním touto odpovědí o Jak mohu přidat čísla do bash skriptu :
START2=$((getStart+1))
Jak můžete zvýšit místní proměnnou ve skriptu Bash?
Komentáře
odpověď
dostávám 2
ze svého kódu. Pro libovolnou proměnnou nebo číslo však můžete použít stejnou techniku:
local start=1 (( start++ ))
nebo
(( ++start ))
nebo
(( start += 1 ))
nebo
(( start = start + 1 ))
nebo jen
local start=1 echo $(( start + 1 ))
atd.
Komentáře
- To může také pomoci: askubuntu.com/questions/385528/…
Odpověď
Zkuste:
START2=$(( `getStart` + 1 ));
$(( ))
říká bash, že má provést aritmetickou operaci, zatímco backticks řekne bash, aby vyhodnotil obsahující výraz, ať Uživatelem definovaná funkce nebo volání externího programu a vrácení obsahu standardního výstupu.
Odpověď
Toto je bezpečná sázka
(( start = start + 1 ))
Pokud je výsledná hodnota nenulová, pak nastavení ukončení při chybě zastaví váš skript
set -e start=0 (( start++ )) echo You will never get here
awk
?sed -n '/begin{document}/{=;q}' data.text
mnohem kratší …}/{=;q}
toto prosím v odpovědi / komentáři?