Допустим, у вас есть файл 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 гарантирует, что если пользователь вводит «красный», утверждение не будет истинным, и поэтому плод не будет найден в списке.
Вы пробовали 'grep'? – anubhava
что вы пробовали? –