Usando la declaración grep y if en Shell Script

Usando la declaración grep y if en Shell Script

Quiero buscar una cadena en un archivo y, después de buscar mucho en este sitio web, terminé usando grepuna ifdeclaración. Sin embargo, las cosas no funcionan como esperaba, a pesar de que seguí todas las instrucciones que encontré en otras publicaciones relacionadas. Aquí está mi 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

Creo que el principal problema es la forma en que leo los argumentos de mi línea de comando.

Respuesta1

Si un script no funciona como espera, una de las primeras cosas que puede intentar es agregarlo set -xantes del punto problemático en el código (en este caso, antes de grep) y ejecutar el script. Luego verás cuál es el guión.de hechohaciendo, para que puedas comparar eso con lo queesperarque estar haciendo.

En su caso, el problema puede ser que _sea un carácter válido en los nombres de las variables, por lo que está intentando utilizar el valor de $string1_from_en lugar de $string1como esperaba. Es por eso que es una buena práctica, incluso si no se utilizan manipulaciones sofisticadas, encerrar los nombres de las variables entre llaves. Por ejemplo:

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

información relacionada