Я думаю, что всегда лучше хранить результат, количество совпадений в этом случае, в переменной.
Тем не менее, у вас есть 2 варианта, используйте grep -c для подсчета согласованных строк [!d1 ]
count=$(grep -c "$string1" file.txt)
Или соедините согласованные строки с wc с grep -o (- только совпадения)
count=$(grep -o "$string1" file.txt | wc -l)
Это будет полный скрипт со вторым вариантом [!d3 ]
#!/bin/sh
echo "Enter your string: "
read string1
count=$(grep -o "$string1" file.txt | wc -l)
if [ $count != 0 ];then
echo "Found it ($count times)"
else
echo "Sorry this string not in file"
fi
exit 0
Кроме того, вы написали read дважды.
Он доступен в 16.04, и установка версии 16.04 на 17.10, скорее всего, будет работать (если вы действительно не можете установить 16.04, в противном случае вы должны это сделать). Однако не просто загрузите .deb и установите его, потому что если в нем обнаружена уязвимость, вы не сможете автоматически получить исправление. Вместо этого вы можете добавить репозитории 16.04 следующим образом:
Сначала скопируйте текущий sources.list в новый файл в /etc/sources.list.d:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.d/xenial_for_libmicrohttpd10.list
Имя нового файл - это просто напоминание о будущем вам, какова его цель. Вы также можете добавить в него более подробный комментарий.
Во-вторых, используйте свой текстовый редактор, чтобы заменить все вхождения artful в файле на xenial. Например:
printf ',s/artful/xenial/\nw\n' | sudo ed /etc/apt/sources.list.d/xenial_for_libmicrohttpd10.list
Наконец, чтобы убедиться, что пакет Xenial, отличный от libmicrohttpd10, будет случайно установлен, придайте им низкий приоритет, создав файл в /etc/apt/preferences.d следующим образом: [ ! d5] Package: *
Pin: release n=xenial
Pin-Priority: 99
Package: libmicrohttpd10
Pin: release n=xenial
Pin-Priority: 500
Тогда вы можете сделать sudo apt update && sudo apt install libmicrohttpd10.
Он доступен в 16.04, и установка версии 16.04 на 17.10, скорее всего, будет работать (если вы действительно не можете установить 16.04, в противном случае вы должны это сделать). Однако не просто загрузите .deb и установите его, потому что если в нем обнаружена уязвимость, вы не сможете автоматически получить исправление. Вместо этого вы можете добавить репозитории 16.04 следующим образом:
Сначала скопируйте текущий sources.list в новый файл в /etc/sources.list.d:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.d/xenial_for_libmicrohttpd10.list
Имя нового файл - это просто напоминание о будущем вам, какова его цель. Вы также можете добавить в него более подробный комментарий.
Во-вторых, используйте свой текстовый редактор, чтобы заменить все вхождения artful в файле на xenial. Например:
printf ',s/artful/xenial/\nw\n' | sudo ed /etc/apt/sources.list.d/xenial_for_libmicrohttpd10.list
Наконец, чтобы убедиться, что пакет Xenial, отличный от libmicrohttpd10, будет случайно установлен, придайте им низкий приоритет, создав файл в /etc/apt/preferences.d следующим образом: [ ! d5] Package: *
Pin: release n=xenial
Pin-Priority: 99
Package: libmicrohttpd10
Pin: release n=xenial
Pin-Priority: 500
Тогда вы можете сделать sudo apt update && sudo apt install libmicrohttpd10.