Incrementa uma coluna toda vez que um script é executado

2

Eu tenho o script abaixo:

#!/bin/bash
# This shell script is to tabulate and search for SR
n=0 # Initial value for Sl.No
next_n=$[$n+1]
read -p "Enter your SR number : " SR
echo -e "$next_n\t$SR\t$(date)" >> /tmp/cases.txt

Quando executo o script pela primeira vez, insiro SR = 123 .
A saída será:

1  123   <date>

Gostaria de executar o script novamente, com um novo valor para SR = 456 . Eu gostaria que a saída fosse:

1 123 <date>
2 456 <date>

No entanto, meu script sempre imprime a coluna 1 como 1,1,1,1 porque o n está sendo reinicializado. Existe uma maneira de incrementar automaticamente a coluna 1 por um fator de 1 sempre que o script for executado para um novo valor de SR?

    
por suhas savkoor 23.03.2017 / 12:13

2 respostas

1

Você pode ler o valor na primeira coluna da última linha do arquivo assim:

#!/bin/bash
# This shell script is to tabulate and search for SR
next_n=$(($(tail -n1 /tmp/cases.txt 2>/dev/null | cut -f1) + 1))
read -p "Enter your SR number : " SR
echo -e "$next_n\t$SR\t$(date)" >> /tmp/cases.txt

cut -f1 seleciona o primeiro campo da linha, sendo os campos sequências de caracteres separados por tabulações.

Isso também funciona quando o arquivo está vazio ou inexistente: next_n está definido como 1 neste caso.

    
por 23.03.2017 / 12:21
0
[ -s "/tmp/cases.txt" ] || : > /tmp/cases.txt
next_n=$(expr "$(wc -l < /tmp/cases.txt)" \+ 1)
read -p "Enter your SR number: " SR
printf '%d\t%d\t%s\n' "$next_N" "$SR" "$(date)" >> /tmp/cases.txt
    
por 23.03.2017 / 13:20