2015-03-23 8 views
0

Спасибо за ваше время.Сравнение ввода пользователя со списком внутри файла

У меня есть требование на SHELL SCRIPT, где я должен получить пользовательский ввод и сравнить его со списком содержимого в текстовом файле и посмотреть, совпадает ли вход с любой из строк в текстовом файле.

Ниже приведен сценарий: кот fruits.txt яблока оранжевых манго винограда

Введите имя фруктов: крыжовник Это не в магазине !! Введите название фрукта: apple Добро пожаловать в мир apple!

Любая помощь будет высоко оценена. :(

+2

Вы пробовали 'grep'? – anubhava

+0

что вы пробовали? –

ответ

0

Допустим, у вас есть файл fruitlist.txt, где ваш список фруктов (или любой другой) хранится

Содержание fruitlist.txt:.

red apple 
green apple 
orange 
mango 
grapes 

Обратите внимание, что после каждого плода есть символ новой строки

следующая Баш скрипт ожидает, что путь к файлу списка фруктов, как это первый аргумент:.

#!/bin/bash 

listFile=$1 

if [ -f "$listFile" ]; then 
    echo "Type 'q' or 'Q' to exit the script." 
    echo "-----------------------------------" 
    while true; do 
     read -p "Type the fruit name: " fruit 
     if [ "$fruit" = "q" ] || [ "$fruit" = "Q" ]; then 
      break 
     elif [ "$(grep "$fruit" "$listFile")" = "$fruit" ]; then 
      echo "The fruit '$fruit' is in the list." 
     else 
      echo "The fruit '$fruit' is not in the list." 
     fi 
    done 
    echo "-----------------------------------" 
else 
    echo "No fruit list file specified." 
fi 

exit 0 

Заявление

if [ -f "$listFile" ]; then 

проверяет, существует файл списка фруктов.

Команда

read -p "Type the fruit name: " fruit 

читает имя фруктов в переменные фрукты.

Первое, если в бесконечное время цикла

if [ "$fruit" = "q" ] || [ "$fruit" = "Q" ]; then 
    break 

проверяет, если пользователь хочет, чтобы выйти из сценария. Нижеследующее:

elif [ "$(grep "$fruit" "$listFile")" = "$fruit" ]; then 
    echo "The fruit '$fruit' is in the list." 
else 
    echo "The fruit '$fruit' is not in the list." 
fi 

проверяет, можно ли найти введенный плод в файле списка фруктов. Команда grep сама по себе найдет каждую строку, содержащую имя плода. Допустим, у вас есть плод с двумя названиями, такими как «красное яблоко», «зеленое яблоко» и т. Д. Пользователь вводит «красный», и если бы это было правдой. Теперь «=» в выражении if гарантирует, что если пользователь вводит «красный», утверждение не будет истинным, и поэтому плод не будет найден в списке.

Смежные вопросы