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
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
- Ez is segíthet: askubuntu.com/questions/385528/…
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
awk
?sed -n '/begin{document}/{=;q}' data.text
sokkal rövidebb …}/{=;q}
ezt válaszban / megjegyzésben kérem?