编写一个Bash脚本,它将采用一个命令行参数(一个目录),并将打印该目录中的每个条目

时间:2017-08-07 09:30:45

标签: bash directory

问题:文件夹被视为文件

我的代码:

#!/bin/bash

for var in $(ls)
do
    echo $var
    if [ -e $var ]
    then
        echo "This is a file"
    else
        echo "This is not a file"
    fi
done

echo All Done

根文件夹的当前内容:

-rw-r--r-- 1 stibo stibo 401 Sep 17 2015 id_rsa.pub drwxrwxr-x 24 stibo stibo 4096 Jul 26 09:25 step -rwxr-xr-x 1 stibo stibo 51 Jul 27 12:51 test.txt drwxrwxrwx 2 stibo stibo 4096 Aug 2 10:32 deletionFile -rwxrw-r-- 1 stibo stibo 225 Aug 2 12:32 deletionScript.vi -rw-rw-r-- 1 stibo stibo 235 Aug 2 12:33 logdetails.txt -rw-rw-r-- 1 stibo stibo 123 Aug 2 12:42 path1.txt -rw-rw-r-- 1 stibo stibo 285 Aug 2 16:18 path2.txt drwxrwxr-x 2 stibo stibo 4096 Aug 3 10:14 archival -rw-rw-r-- 1 stibo stibo 0 Aug 3 13:42 ls -rw-rw-r-- 1 stibo stibo 164732 Aug 3 14:11 messages -rw-rw-r-- 1 stibo stibo 164732 Aug 3 14:11 wtmp drwxrwxrwx 2 stibo stibo 4096 Aug 3 14:21 backup -rwxrwxr-x 1 stibo stibo 160 Aug 4 15:34 newScript.vi -rw-rw-r-- 1 stibo stibo 160 Aug 4 15:41 Code.txt -rw-rw-r-- 1 stibo stibo 0 Aug 4 15:43 Details.txt

哪里有 4个文件夹 12个文件

但是当我运行脚本时,我可以看到每个东西都被视为一个文件,即使其中有文件夹。

能告诉我出错的地方吗?

1 个答案:

答案 0 :(得分:0)

您已经使用-e测试了给定条目是否存在。使用-d测试目录,使用-f测试文件