-2

这是我的问题,我已经在这个 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!"
4

1 回答 1

2

您的脚本中有太多错误:

cd ~ $文件名

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

grep -F "$word1" "$filename"

你跑了grep,但你不评估它的结果。

如果 $word 存在于 $filename 中,则

bash 中没有“存在”运算符。并且,您必须在 之前放置一个分号then,或者将其换行。

最后,您没有fiif声明添加结尾。

我想你的意思是这样的:

#!/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
于 2013-11-10T21:38:55.617 回答