Hogyan növelhető a helyi változó a Bash-ban?

Adatok

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 

amely a 2 eredményt adja, de én a következőt akarom: 3. Sikertelenül módosítom a végét ezzel a válaszsal arról, hogy Hogyan adhatok számokat egy bash szkripthez :

START2=$((getStart+1)) 

Hogyan növelheti a helyi változót a Bash szkriptben?

Megjegyzések

  • I ' m 2-et, nem 1-et kapok a kódból.
  • Sajnálom a hibámat!
  • KI: miért awk? sed -n '/begin{document}/{=;q}' data.text sokkal rövidebb …
  • @Costas Igen, igazad van! Rossz napom volt a túl bonyolult gondolkodásban. Most itt gondolkodva nyitott időközönként: unix.stackexchange.com/q/229060/16920 Meg tudja magyarázni a }/{=;q} ezt válaszban / megjegyzésben kérem?

Válasz

a kódodból. Mindazonáltal ugyanazt a technikát használhatod bármely változóra vagy számra:

local start=1 (( start++ )) 

vagy

(( ++start )) 

vagy

(( start += 1 )) 

vagy

(( start = start + 1 )) 

vagy csak

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

stb.

Megjegyzések

Válasz

Próbálja:

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

A $(( )) elmondja a bash-nak, hogy számtani műveletet kell végrehajtania, míg a backtickek azt mondják a bash-nak, hogy értékelje a tartalmazó kifejezést, legyen i t egy felhasználó által definiált függvényt vagy egy külső program hívását, és adja vissza az stdout tartalmát.

Válasz

Ez a a biztonságos tét

(( start = start + 1 )) 

Ha az eredmény nem nulla, akkor a kilépés beállításakor a hiba leállítja a szkriptet

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

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük