Utilizzo di grep in un'istruzione if-else [chiuso]


10

Perché il mio codice non viene emesso se una stringa inserita non è nel file. Quando inserisco una stringa e non si trova nel file, non c'è risposta, torna indietro. Qualcuno può dirmi cosa c'è che non va nel mio codice?

while :
do
echo "Please enter a string"
read input_string
echo "Please enter the file name too see if that string is present in it - (Enter .abw after)"
read input_string1
if grep -q $input_string $input_string1 ; then
echo  "Your string has been found"
fi
done

3
Cosa ti aspetti che accada?
Patrick,

Voleva dire che una stringa inserita, la cerca nel file e dice se quella stringa è presente. Ora ho capito che devo inserire un altro bit di codice per altro. Grazie
Adam Poyser,

input_stringnon è proprio un nome variabile parlante, comunque :)
Marian,

Risposte:


10
while :
 do
     echo "Please enter a string"
     read input_string
     echo "Please enter the file name too see if that string is present in it - (Enter .abw after)"
     read input_string1
     grep -q "${input_string}" "${input_string1}"                                                                 
     if [ $? -eq 0 ] ; then
         echo  "Your string has been found"
     else 
         echo "Your string has not been found"
     fi
 done

1
Ho appena provato questo codice e funziona grazie! Non mi rendevo conto che tutto il mio problema era di non avere un'altra dichiarazione. Grazie per la rapida risposta
Adam Poyser,

2
Devi citare i parametri grep. Pensa cosa accadrebbe se la mia stringa di ricerca includesse -vo ci fossero spazi nel nome del file.
Ángel,

0

Hai capito il tuo ramo mancante, ma un suggerimento:

invece di usare $input_string $input_string1prova ${input_string} ${input_string1}solo per assicurarti di non essere $input_stringseguito da 1.


No, la sostituzione proposta è esattamente equivalente all'originale. $input_string1è il valore della variabile input_string1(divisa e globbed, poiché non è quotata), non coinvolge la variabile input_string.
Gilles 'SO- smetti di essere malvagio' il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.