Dados
1 \begin{document} 3
Código
#!/bin/bash function getStart { local START="$(awk "/begin\{document\}/{ print NR; exit }" data.tex)" echo $START } START2=$(getStart) echo $START2
que retorna 2
, mas eu quero 3
. Mudei sem sucesso o final com esta resposta sobre Como posso adicionar números em um script bash :
START2=$((getStart+1))
Como você pode incrementar uma variável local no script Bash?
Comentários
Resposta
Estou recebendo 2
do seu código. No entanto, você pode usar a mesma técnica para qualquer variável ou número:
local start=1 (( start++ ))
ou
(( ++start ))
ou
(( start += 1 ))
ou
(( start = start + 1 ))
ou apenas
local start=1 echo $(( start + 1 ))
etc.
Comentários
- Isso também pode ajudar: askubuntu.com/questions/385528/…
Resposta
Experimente:
START2=$(( `getStart` + 1 ));
O $(( ))
diz ao bash que deve realizar uma operação aritmética, enquanto os crases dizem ao bash para avaliar a expressão contida, be i t uma função definida pelo usuário ou uma chamada para um programa externo e retornar o conteúdo de stdout.
Resposta
Este é a aposta segura
(( start = start + 1 ))
Se o valor resultante for diferente de zero, definir a saída em caso de erro interromperá seu script
set -e start=0 (( start++ )) echo You will never get here
awk
?sed -n '/begin{document}/{=;q}' data.text
muito mais curto…}/{=;q}
isso em uma resposta / comentário, por favor?