首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在bash脚本中找到给定基本名称的文件并检索其文件类型?

如何在bash脚本中找到给定基本名称的文件并检索其文件类型?
EN

Stack Overflow用户
提问于 2020-03-27 10:22:26
回答 2查看 59关注 0票数 1

我正在写我的第一个bash脚本作为家庭作业的一部分,由于covid 19,我们无法在课堂上复习其中的一些东西(我也没有做好谷歌搜索)。

我正在编写一个脚本,该脚本接受用户输入并搜索cd以查找名为$userInput的文件。如果找到,脚本将确定该文件是否为“普通文件”(例如.txt)或该文件是否为目录。如何收集此信息?

下面是我目前的代码:

代码语言:javascript
复制
#! /bin/bash

$userInput 
echo "Enter a file name. Empty to exit."
while [ 1 ]
do
    echo "Please input a file name:"
    read userInput
    if [ "$userInput" == "" ]; then
        exit
    else
        echo $userInput
    fi
done

我有循环和获取用户输入,我在这里遗漏了什么?

EN

回答 2

Stack Overflow用户

发布于 2020-03-27 12:34:34

代码语言:javascript
复制
if cd $userInput*; then
   cd ..
   echo "It is a directory."
else
   # the cd will do the rest of informing for you
fi

我还强烈建议将其转换为文件,并在命令行中获取用户输入,如下所示:

bash ./yourcode.sh filename

在你的代码中:

代码语言:javascript
复制
if cd $1*; then
    cd ..
    echo "It is a directory."
else
    # the cd will do the rest of informing for you
fi

编辑后的:EXTRA

如果你真的想知道发生了什么,请继续在这里。在bash中,每个命令/函数默认返回一个值,通知内核它是否成功终止或出错,为了简单起见,我们假设它在成功终止时返回true,如果没有成功则返回false。在这里,我将这段信息与函数cd一起使用,该函数将当前目录更改为指定的目录,如果更改成功,它将返回true,然后我将在if语句中捕获该值以执行代码,这包括返回原始目录(cd ..)并告诉用户这是一个目录。否则,cd将返回false,并自行告诉您发生了什么,它是一个文件还是不存在,* (通配符)的存在是为了查找它可能具有或甚至没有的任何扩展名。我希望这能有所帮助,干杯!

票数 0
EN

Stack Overflow用户

发布于 2020-03-27 15:46:02

有几种方法可以对条目进行分类。例如,

代码语言:javascript
复制
[[ -f $filename ]]

测试常规文件,

代码语言:javascript
复制
[[ -d $filename ]]

测试目录,还有其他测试,您可以在其中测试符号链接,或者您是否具有读/写/执行权限。您可以找到可用的文件测试操作符here的列表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60879107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档