İf-else deyiminde grep kullanma [kapalı]


10

Girilen bir dize dosyada değilse kodum neden çıkmıyor? Bir dize girdiğimde ve dosyada olmadığında, geri dönüş yok, tekrar başa dönüyor. Birisi bana kodumda neyin yanlış olduğunu söyleyebilir mi?

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
Ne olmasını bekliyorsun?
Patrick

Girdiğiniz bir dizenin dosyada aradığını ve bu dizenin mevcut olup olmadığını söylemesi gerekiyordu. Şimdi başka bir kod daha girmeniz gerektiğini fark ettim. Teşekkürler
Adam Poyser

input_stringBu arada gerçekten konuşan bir değişken adı değil :)
Marian

Yanıtlar:


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
Ben sadece bu kodu denedim ve teşekkürler çalışıyor! Bütün sorunumun başka bir açıklama yapmamakla ilgili olduğunun farkında değildim. Hızlı yanıt için teşekkürler
Adam Poyser

2
Grep parametrelerini belirtmeniz gerekiyor. Arama dizem içeriyorsa -vveya dosya adında boşluklar olursa ne olacağını düşünün .
Ángel

0

Başka dal eksik olduğunu anladın, ama bir öneri:

kullanmak yerine sadece bunu izlemediğinizden emin olmak için 1'i $input_string $input_string1deneyin .${input_string} ${input_string1}$input_string


Hayır, önerilen değiştirme işleminiz orijinaline tam olarak eşdeğerdir. $input_string1değişkenin değeridir input_string1(bölünmediği ve tırnak içine alındığı için tırnak içine alındığı için), değişkeni içermez input_string.
Gilles 'SO- kötü olmayı bırak'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.