如果查找不为空,如何显示true

bash我很新。 我上周刚刚开始学习。 我正在尝试search文件名。 如果find文件,如何显示消息?

这是我有,但它一直说'不'

echo ' [Enter] a file name ' read findFile if [[ -n $(find /$HOME -type f -name "findFile") ]] then echo 'yes' else echo 'no' fi 

几个问题:

  1. 定义一个变量时使用var=或者read var ,或者使用$var时使用$var
  2. 找到一个文件后没有任何理由继续搜索,所以做下面的事情,在find一个文件后找到它,然后返回它作为-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 

    请注意, -quit选项可以在GNU和FreeBSD操作系统上工作(这意味着这在大多数情况下都可以使用),但是例如,您需要将其更改为在NetBSD上-exit 。 有关此选项的详细信息,可以从Unix / Linux StackExchange中看到这个答案 。

另请注意,根据Adaephon的评论 ,虽然/ $HOME并不需要/ ,但这并不是错的,文件仍然可以找到。

使用wc来计算查找输出中的行数:

 if [ $(find $HOME -type f -name "thisFile" 2> /dev/null | wc -l) -gt 0 ]; then echo 'yes' else echo 'no' fi 

2> /dev/null部分隐藏了可能的错误消息。