【发布时间】:2021-06-02 14:06:14
【问题描述】:
我想找一个文件。如果用户输入“file.txt”,那么我需要回显“file.txt”。但如果找不到文件名,则回显“未找到”。我拥有的代码用于在文件中查找单词。但是如果我只需要搜索文件怎么办。如果我写:result=`grep $filename`,它将无法正常工作。 grep 文件名的格式是什么?
#!/bin/bash
echo -n "File name : "
read filename
echo -n "Word : "
read word
result=`grep $word $filename`
if [ "$result" != "" ]
then
echo "$result"
else
echo "Not found"
fi
【问题讨论】:
-
我不明白 - 你想检查给定的文件是否存在?
-
为什么需要使用
grep?使用if [ -f "$filename" ]; then echo "$filename"; else echo "not found"; fi会做你想做的事。 -
是的,没错@BenjaminW。
-
你想用多少种不同的方式来做呢?是的,您可以使用
grep;不,这样做没有任何意义,任何此类使用grep几乎都是毫无意义的(更不用说比理智的方式更难)。我想你可以在ls "$filename" 2>/dev/null | grep "$filename" || echo "not found"上尝试一些变体。但是,如果您的文件名可能包含换行符、空格或其他非推荐字符,则使用ls的输出可能会出错。 -
POSIX 指定 grep 在错误时返回退出代码 >1