¿Alguien me puede ayudar a entender este código?
Publicado por Jesus Ruiz (4 intervenciones) el 12/04/2019 22:36:35
Tengo un ejercicio que me dice que explique que hace este código:
Llevo varias horas dándole vueltas y no logro entenderlo bien, lo he ejecutado y a veces imprime "A" por lo que a veces entra en el if pero se me escapa.
Lo que mas o menos entiendo es que le pasas 2 parámetros, y se hace un for que en i guarda cada iteración del primer parámetro, por lo que supongo que el primer parámetro sería un archivo y que en i se guarda cada línea del mismo.
Después, mediante grep se busca el segundo parámetro en el archivo y la salida se redirige a /dev/null si la búsqueda existe entra en el if, imprime A y copia esa línea en el dir /tmp y al final imprime "B"
Lo que no entiendo es porque entonces si le paso un archivo que contiene las palabras "hola" y "adios" y de segundo parámetro le paso hola no funciona, me dice: "grep: hola: No existe el archivo o el directorio"
En un intento conseguí entrar al if poniendo como primer parámetro hola y como segundo parámetro también hola, pero no se ha vuelto a repetir.
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
for i in `sort $1`
do
if grep $2 $i > /dev/null
then
echo A
cp $i /tmp
exit
fi
done
echo B
Lo que mas o menos entiendo es que le pasas 2 parámetros, y se hace un for que en i guarda cada iteración del primer parámetro, por lo que supongo que el primer parámetro sería un archivo y que en i se guarda cada línea del mismo.
Después, mediante grep se busca el segundo parámetro en el archivo y la salida se redirige a /dev/null si la búsqueda existe entra en el if, imprime A y copia esa línea en el dir /tmp y al final imprime "B"
Lo que no entiendo es porque entonces si le paso un archivo que contiene las palabras "hola" y "adios" y de segundo parámetro le paso hola no funciona, me dice: "grep: hola: No existe el archivo o el directorio"
En un intento conseguí entrar al if poniendo como primer parámetro hola y como segundo parámetro también hola, pero no se ha vuelto a repetir.
Valora esta pregunta


0