0

我想知道是否有任何方法可以在 bash 中使用“查找”命令进行测试。换句话说,我该如何做出一个条件语句来测试是否使用“find”找到了一个文件?

为了详细说明我的意思,我包含了以下代码。其目的应该是:

  1. 查找用户输入的目录
  2. 在该目录中找到一个文件,文件名由用户输入
  3. 在该文件中找到一个单词,该单词也是由用户输入的
#!/bin/bash
#Task9.sh
cd /
echo "please enter a directory"
read direc
path= find home -depth -name "$direc" 
if [ -z $path ]; then
    echo "not a valid directory"
    exit 1
else
    cd $path
    counter=3
    while [ $counter -gt 0 ]; do
        echo "enter a filename"
        read FileName
        FilePath= find $direc -depth -name "$FileName"
        if [ -z $FilePath ]; then
            break
        else
                let counter--
    fi  
    done
if [ -z $FilePath ]; then 
            cd $FilePath        
            echo "input a word"
            read SearchWord
            echo "Found!"
            grep $SearchWord $FileName

    else
           echo "No such file"
           exit 2
    fi
fi

exit 0

我对 Bash 很陌生,所以对于我忽略的任何简单错误,我深表歉意。我还不习惯解析语言。感谢任何帮助我的人,非常感谢

4

1 回答 1

1

您正在使用find命令加上 shell 的-z $foo运算符来确定用户是否指定了现有文件的路径。可能有一种方法可以直接询问 bash 文件是否存在,使用基于文件的运算符,而不是运行不必要的命令,然后对结果使用基于字符串的运算符(提示:存在)。此页面上的一些链接可能会对您有所帮助:

http://tldp.org/LDP/abs/html/tests.html

祝你好运!

于 2012-09-13T01:54:39.570 回答