我对bash非常陌生。我上周刚开始学习。我正在尝试搜索文件名。
找到文件后如何显示消息?

这就是我所拥有的,但一直说“不”

echo ' [Enter] a file name '
read findFile

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

最佳答案

一些问题:

  • 定义变量时使用var=read var,但在使用它时使用$var
  • 没有理由在找到文件后继续搜索,因此请执行以下操作,其中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
    

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

  • 还要注意,对于Adaephon's comment,尽管/前面不需要$HOME,但这不是错误的,并且仍会找到文件。

    关于linux - 如果find不为空,如何显示true,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22805204/

    10-12 23:39