0

テストのために bash で「find」コマンドを使用する方法があるかどうか知りたいです。つまり、「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コマンドとシェルの演算子を使用し-z $fooて、ユーザーが既存のファイルへのパスを指定したかどうかを判断しています。不要なコマンドを実行し、結果に対して文字列ベースの演算子を使用する代わりに、ファイルベースの演算子を使用して、ファイルが存在するかどうかを bash に直接問い合わせる方法があるかもしれません (ヒント: あります)。このページのリンクの一部が役立つ場合があります。

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

幸運を!

于 2012-09-13T01:54:39.570 に答える