Sử dụng grep trong câu lệnh if-other [đã đóng]


10

Tại sao mã của tôi không xuất ra nếu một chuỗi được nhập không có trong tệp. Khi tôi nhập một chuỗi và nó không có trong tệp, không có phản hồi, nó sẽ lặp lại từ đầu. Ai đó có thể cho tôi biết những gì sai với mã của tôi?

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
Bạn đang mong đợi điều gì xảy ra?
Patrick

Nó có nghĩa là để nói rằng một chuỗi mà bạn nhập, nó tìm kiếm nó trong tệp và nó nói nếu chuỗi đó có mặt. Bây giờ tôi đã nhận ra rằng tôi cần phải nhập một đoạn mã khác cho người khác. Cảm ơn
Adam Poyser

input_stringNhân tiện, đây không phải là một tên biến nói chuyện :)
Marian

Câu trả lời:


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
Tôi vừa thử mã này và nó hoạt động được! Tôi đã không nhận ra rằng tất cả vấn đề của tôi là không có tuyên bố khác. Cảm ơn đã phản hồi nhanh chóng
Adam Poyser

2
Bạn cần trích dẫn tham số grep. Hãy nghĩ điều gì sẽ xảy ra nếu chuỗi tìm kiếm của tôi bao gồm -vhoặc có khoảng trắng trong tên tệp.
Ángel

0

Bạn đã tìm ra nhánh khác bị thiếu của mình, nhưng một gợi ý:

thay vì sử dụng $input_string $input_string1thử ${input_string} ${input_string1}chỉ để đảm bảo bạn không bị $input_stringtheo dõi bởi 1.


Không, đề xuất thay thế của bạn là chính xác tương đương với bản gốc. $input_string1là giá trị của biến input_string1(chia và toàn cầu, vì nó không được trích dẫn), nên nó không liên quan đến biến input_string.
Gilles 'SO- ngừng trở nên xấu xa'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.