J'écris un script bash pour rechercher un motif dans un fichier en utilisant GREP. Je ne comprends pas pourquoi cela ne fonctionne pas. C'est le programme
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
Ou existe-t-il une approche différente pour le faire?
Merci
(contenu du fichier)
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 |
(modèle)
`UNIX` or `unix`
Les guillemets simples autour de $pattern
dans l'instruction grep empêchent le shell de résoudre la variable shell, vous devez donc utiliser des guillemets doubles.
Un seul de ces points-virgules est nécessaire (celui précédant then
), mais je l'omets habituellement et mets then
sur une ligne à part. Vous devez mettre des guillemets autour de la variable en écho et autour de la variable contenant votre modèle grep
. Les variables contenant les noms de fichiers doivent également être citées. Vous pouvez avoir read
afficher votre invite. Vous devriez utiliser $()
au lieu de backticks.
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
read -p "Entrez le nom du fichier ..." fname read -p "Entrez le modèle de recherche" modèle si [-f "$ fname"] alors result = $ (grep -i -v -e $ modèle -e "$ fname ") echo" $ result "fi