Использование Сценария Bash Grep для поиска шаблона в файле

Я пишу сценарий удара для поиска шаблона в файле с помощью GREP. Я невежествен для того, почему это не работает. Это - программа

echo "Enter file name...";
read fname;
echo "Enter the search pattern";
read pattern
if [ -f $fname ]; then
    result=`grep -i '$pattern' $fname`
    echo $result;
fi

Или есть ли другой подход, чтобы сделать это?

Спасибо


(содержание файла)

Welcome to UNIX
The shell is a command programming language that provides an interface to the UNIX operating system.
The shell can modify the environment in which commands run.
Simple UNIX commands consist of one or more words separated by blanks. 
Most commands produce output on the standard output that is initially connected to the terminal. This output may be sent to a file by writing.
The standard output of one UNIX command may be connected to the standard input of another UNIX Command by writing the `pipe' operator, indicated by |

(шаблон)

`UNIX` or `unix`
10
задан Atif Mohammed Ameenuddin 20 June 2010 в 11:08
поделиться

2 ответа

Одинарные кавычки вокруг $pattern в операторе grep заставляют оболочку не разрешать переменную shell, поэтому следует использовать двойные кавычки.

18
ответ дан 3 December 2019 в 17:57
поделиться

Необходима только одна из этих точек с запятой (одна перед , затем ), но я обычно опускаю ее и помещаю , затем в отдельную строку. Вы должны заключить в двойные кавычки переменную, которую вы повторяете, и переменную, содержащую ваш шаблон grep . Переменные, содержащие имена файлов, также должны быть заключены в кавычки. Вы можете сделать так, чтобы прочитал , чтобы отобразить вашу подсказку. Вместо обратных кавычек следует использовать $ () .

read -p "Enter file name..." fname
read -p "Enter the search pattern" pattern
if [ -f "$fname" ]
then
    result=$(grep -i "$pattern" "$fname")
    echo "$result"
fi
4
ответ дан 3 December 2019 в 17:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: