Usando a instrução grep e if no Shell Script

Usando a instrução grep e if no Shell Script

Quero pesquisar uma string em um arquivo, e depois de muito pesquisar neste site, acabei usando a instrução grepin e if. No entanto, as coisas não estão funcionando como eu esperava, embora eu tenha seguido todas as instruções que encontrei em outras postagens relacionadas. Aqui está meu código.

echo "Enter dicounter number"
read string1
echo "Enter side with LEDs"
read string2

if grep -q "dicounter_$string1_from_$string2" MasterFile.txt; then
   echo "dicounter_$string1_from$string2 already exists in MasterFile."
else
   { (a bunch of stuff to make the transmitter operate) }
fi

Acho que o principal problema é a maneira como estou lendo meus argumentos de linha de comando.

Responder1

Se um script não estiver funcionando como você espera, uma das primeiras coisas que você pode tentar é adicionar set -xantes do ponto problemático no código (neste caso, antes do grep) e executar o script. Você verá então qual é o scriptna verdadefazendo, para que você possa comparar isso com o que vocêesperarisso estar fazendo.

No seu caso, o problema pode ser _um caractere válido em nomes de variáveis, então você está tentando usar o valor de $string1_from_em vez $string1do esperado. É por isso que é uma boa prática, mesmo sem usar manipulações sofisticadas, colocar os nomes das variáveis ​​entre chaves. Por exemplo:

if grep -q "dicounter_${string1}_from_${string2}" MasterFile.txt; then
   echo "dicounter_${string1}_from${string2} already exists in MasterFile."
else
   [..]

informação relacionada