如果find不为空,如何显示true

eMR*_*MRe 2 linux bash

我对bash很新.我上周才开始学习.我正在尝试搜索文件名.如果找到该文件,如何显示消息?

这就是我所拥有但它一直说'不'

echo ' [Enter] a file name '    
read findFile

if [[ -n $(find /$HOME -type f -name "findFile") ]]
then
    echo 'yes'
else
    echo 'no'
fi
Run Code Online (Sandbox Code Playgroud)

Rei*_*ase 5

一些问题:

  1. 使用var=read var定义变量时,但$var使用时.
  2. 没有任何理由继续寻找文件后搜索,所以做类似下面,其中find-quit找到一个单一的文件,并返回它的结果后,-print

    #!/bin/bash
    echo ' [Enter] a file name '    
    read findFile
    if [[ -f $(find "$HOME" -type f -name "$findFile" -print -quit) ]]; then
        echo 'yes'
    else
        echo 'no'
    fi
    
    Run Code Online (Sandbox Code Playgroud)

    请注意,该选项-quit适用于GNU和FreeBSD操作系统(这意味着它在大多数情况下都有效),但是例如,您需要将其更改为-exitNetBSD.您可以从Unix/Linux StackExchange中看到此答案,以获取有关此选项的详细信息.

另请注意,根据Adaephon的评论,虽然/前面不需要$HOME,但没有错,文件仍然会被找到.

  • 实际上(至少在Linux上)`/ $ HOME`确实存在并且与`$ HOME`相同.路径中的多个`/`只是作为单个`/`处理.虽然初始`//`在某些Unices上有特殊含义,但Linux的情况并非如此. (2认同)