Menggunakan grep dalam pernyataan if-else [ditutup]


10

Mengapa kode saya tidak menghasilkan jika string yang dimasukkan tidak ada dalam file. Ketika saya memasukkan string dan tidak ada dalam file, tidak ada respons kembali, itu kembali ke loop awal. Dapatkah seseorang memberi tahu saya apa yang salah dengan kode saya?

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
Apa yang kamu harapkan terjadi?
Patrick

Itu dimaksudkan untuk mengatakan bahwa string yang Anda masukkan, itu mencari di file dan mengatakan jika string itu ada. Saya sekarang menyadari bahwa saya harus memasukkan sedikit kode lagi. Terima kasih
Adam Poyser

input_stringOmong-omong bukan nama variabel yang bisa dibilang :)
Marian

Jawaban:


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
Saya baru saja mencoba kode ini dan berhasil, terima kasih! Saya tidak menyadari bahwa semua masalah saya adalah tidak memiliki pernyataan lain. Terima kasih atas tanggapan cepatnya
Adam Poyser

2
Anda perlu mengutip parameter grep. Pikirkan apa yang akan terjadi jika string pencarian saya menyertakan -v, atau ada spasi dalam nama file.
Ángel

0

Anda menemukan cabang lain yang hilang, tetapi satu saran:

alih-alih menggunakan $input_string $input_string1coba ${input_string} ${input_string1}hanya untuk memastikan Anda tidak $input_stringdiikuti oleh 1.


Tidak, pengganti yang Anda ajukan persis sama dengan yang asli. $input_string1adalah nilai variabel input_string1(split dan globbed, karena tidak dikutip), itu tidak melibatkan variabel input_string.
Gilles 'SO- stop being evil'
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.