Bash-使用'find'命令进行测试

时间:2012-09-13 01:33:17

标签: bash

我想知道是否有任何方法可以在bash中使用'find'命令进行测试。换句话说,我如何制作一个条件语句来测试文件是否与'find'一起被发现?

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

  1. 找到用户输入的目录
  2. 在该目录中找到一个文件,用户输入的文件名
  3. 在该文件中找到一个单词,该单词也由用户输入
  4. #!/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很新,所以我为我忽略的任何容易出错而道歉。我还不习惯解析这门语言。感谢任何帮助我的人,非常感谢

1 个答案:

答案 0 :(得分:1)

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

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

祝你好运!