试图在文件名中查找单词的shell脚本的错误

时间:2013-11-10 21:30:38

标签: linux bash shell grep

这是我的问题我已经在这个shell脚本上工作了一段时间,我不知道我做错了什么。 shell脚本会出现grep:textfile1.txt no such file or directoryline 10 syntax error 'else'等错误。我不确定哪种语法去哪里。这是我的剧本。

#!/bin/bash

echo "Find The file you want to search the word in"
read filename
cd ~ $filename
echo "enter the word you want to find"
read word1
grep -F "$word1" "$filename"
if $word exists in $filename then
        echo "$word exist in $filename"
else
        echo "the file or word doesn't exist!"

1 个答案:

答案 0 :(得分:2)

您的脚本中有太多错误:

  

cd~ $ filename

$filename毫无意义,shell会忽略它,它会将工作目录更改为您的主目录。还要记住,当您在指定的文件名上运行grep时,更改到主目录会影响程序的行为,因为相对路径必须相对于您的主目录才能工作,否则文件可能会找不到。

  

grep -F“$ word1”“$ filename”

您运行grep但不评估其结果。

  

如果$ filename中存在$ word,那么

bash中没有“exists”运算符。 而且,你必须在then之前加一个分号,或者把它放在一个新的行上。

最后,您没有为fi语句提供结束if

我认为你的意思是这样的:

#!/bin/bash

echo "Find The file you want to search the word in"
read filename
cd
echo "enter the word you want to find"
read word1
if grep -qF "$word1" "$filename" 2>/dev/null; then
    echo "$word1 exists in $filename"
else
    echo "the file or word doesn't exist!"
fi