首页 > 解决方案 > 修改 bash 脚本,使其在检查实体类型后,还列出输入实体的详细信息

问题描述

PASSED=$1

if [ -f $PASSED ]; then
        echo "$PASSED is a file"
        ls -l $PASSED
elif [ -d $PASSED ]; then
        echo "$PASSED is a directory"
        ls -l $PASSED
else
        "$PASSED is invalid"
fi

在终端,当我推送文件输入时,比如 demo.sh,输出正确打印为:“demo.sh is a file”rwxr-xr-x 1 system system 12 Jan 16 03:12 26 14:47 demo。嘘

但是对于一个目录,比如云,它给出:云是一个目录,总数为 0

我应该怎么做才能纠正这个问题?

在此处输入图像描述

标签: linuxbashscripting

解决方案


如 ls 的手册页所示:

   -d, --directory
          list directories themselves, not their contents

在您当前的实现中,当您只对目录使用 -l 时, ls 将显示目录的内容。要仅列出目录的属性,请使用 -d 和 -l 等:

ls -ld $PASSED

推荐阅读