Como usar a variável bash para manter uma contagem em execução?

0

Eu preciso fazer um script no bash para manter uma contagem em execução com base na entrada do teclado do usuário

if i type "1" i want a variable $h to increment +1

if i type "2" i want a variable $L to decrement -1

e eu quero que a variável $ c produza a soma das duas primeiras variáveis.

Eu tentei isso: sem sucesso

#!/bin/bash

h='0'
l='0'

read card

if [$card='1']
then 
  let "h++"
fi
if [$card='2']
then
  let "l--"
fi

c=$(($h+$l))

echo $c'

Onde eu estou estragando?

    
por Wolfgang Steele 02.03.2018 / 22:57

1 resposta

1
  • [ $card -eq 1 ] - errado, o [ deve ter espaços e -eq deve ser usado para comparação aritmética

  • $c < - você teve um backtick à direita, então remova-o.

  • Não está errado, mas apenas uma sugestão: let var++ não precisa de aspas duplas e $((var++)) não precisa de $ (o operador "deferência", por assim dizer).
  • Não está errado, mas é desnecessário: aspas simples na atribuição de números h=0

A ideia completa de "contagem de execução" pode ser um problema: seu script é sequencial, portanto, por definição, as variáveis desaparecerão assim que o script sair. Sua contagem de execução não será contada simplesmente porque é assim que o shell funciona. O que você pode fazer é enviar contadores para o arquivo temporário e lê-los novamente. Alternativamente, faça seu script rodar em loop while infinito. Algo como:

#!/bin/bash
h=0
l=0
while read user_input;
do
    [ "$user_input" -eq 1 ] && ((h++))
    [ "user_input" -eq 2 ] && ((l--1))

    echo "So far h is $h, and l is $l"
done
    
por 02.03.2018 / 23:07