设计一个 shell 脚本:判断当前工作目录下所有的文件类型,如果是目录显 示目录名,如果是文件,查看文件内容,如果都不是,显示提示信息

设计一个 shell 脚本:判断当前工作目录下所有的文件类型,如果是目录显
示目录名,如果是文件,查看文件内容,如果都不是,显示提示信息

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7640796
  • 除此之外, 这篇博客: 如何执行shell脚本文件中的 为什么不能在当前目录直接执行当前目录下的脚本文件呢? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    当前工作目录就是 /root,目录下存在文件 test.sh,我们直接执行:

    [root@htlwk0001host ~]# pwd
    /root
    [root@htlwk0001host ~]# test.sh
    -bash: test.sh: 未找到命令
    

    ./test.sh 的意思是说在当前的工作目录下执行 test.sh。如果不加上./,shell 可能会响应找不到指定文件的错误提示信息。因为当前的工作目录 (/root)可能不在执行程序时默认的搜索路径之列。也就是说,当前目录不在环境变量 PATH 的内容之中。

    查看 PATH 的内容可用 echo $PATH 命令:

    [root@htlwk0001host ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    

    如上查询结果可知 /root/ 不在环境变量 PATH 中,所以必须加上 ./,告诉解释器脚本文件在哪里。

  • 以下回答来自chatgpt:

    我可以为您提供以下解决方案:

    首先,需要使用for循环遍历当前目录下的所有文件和目录,利用if语句判断文件类型。判断文件类型可以使用-d判断是否为目录,-f判断是否为普通文件,然后再使用cat命令查看文件内容。最后需要使用echo命令分别输出每个文件或目录。

    示例代码如下:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    #!/bin/bash
    
    for file in *; do
      if [ -d "$file" ]; then
        echo "Directory: $file"
      elif [ -f "$file" ]; then
        echo "File: $file"
        cat "$file"
      else
        echo "Unknown: $file"
      fi
    done
    

    上述代码中,$file代表当前遍历到的文件名,通过if语句分别判断它是目录还是普通文件,如果是目录,使用echo输出目录名,如果是普通文件,使用echo输出文件名,并使用cat命令查看文件内容,如果既不是目录也不是普通文件,使用echo输出"Unknown"。

    如果您希望将上述代码封装成一个函数,可以这样定义函数:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    #!/bin/bash
    
    function list_files() {
      for file in *; do
        if [ -d "$file" ]; then
          echo "Directory: $file"
        elif [ -f "$file" ]; then
          echo "File: $file"
          cat "$file"
        else
          echo "Unknown: $file"
        fi
      done
    }
    
    # 调用函数
    list_files
    

    上述代码中,将for循环封装到了一个名为list_files的函数中,并在函数内部定义$file变量,通过调用该函数即可运行脚本。

    希望这些信息可以帮助您。如果您还有其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^