Вы должны прочитать строку1 , что мне делать? Вот мой код:
#!/bin/sh
echo "Enter your sting: "
read read string1
if [ grep -q $string1 file.txt ];then
echo "Found it"
else
echo "Sorry this string not in file"
fi
exit 0
read
команда является неправильной, это должно быть read string1
(и необходимо использовать -r
для предотвращения read
от искажения обратных косых черт: read -r string1
); if grep -q $string1 file.txt
, так как Вы не оцениваете вывод grep
, а скорее его возвращаемое значение; -F
опция к grep
, чтобы препятствовать тому, чтобы он интерпретировал метасимволы регулярного выражения как таковые: if grep -qF $string1 file.txt
$string1
для предотвращения потенциального расширения имени файла и / или разделение слова: if grep -qF "$string" file.txt
Другие примечания:
exit 0
в конце избыточно и не действительно необходимый, как будто сценарию удается достигнуть той точки без ошибок, которые это возвращает 0
так или иначе; , Таким образом, сценарий, исправленный согласно вышеупомянутому, был бы:
#!/bin/sh
echo "Enter your sting: "
read string1
if grep -qF "$string1" file.txt;then
echo "Found it"
else
echo "Sorry this string not in file"
fi
Я думаю, что всегда лучше сохранить результат, количество соответствий в этом случае, в переменной.
Тем не менее Вы имеете 2 варианта, используете grep -c
, чтобы считать подобранные строки
count=$(grep -c "$string1" file.txt)
Или передать подобранные строки по каналу к wc
от grep -o
(-единственные соответствия)
count=$(grep -o "$string1" file.txt | wc -l)
, Это будет полным сценарием со второй опцией
#!/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
дважды.
└─sdc1 8:33 1 29.7G 0 part
. Для добавления этого устройства к/etc/fstab
мне было бы нужно этиblkid
, но устройство не обнаруживается, когда я делаюblkid
. Что я пропускаю?Примечание: Я не эксперт. Я просто выполняю шаги.:) – user128785 28 June 2017 в 17:53