MST
星途 面试题库

面试题:Bash脚本中的条件判断与故障排查基础

编写一个Bash脚本,该脚本接受一个文件路径作为参数。如果文件存在且是普通文件,输出文件的大小;如果文件存在但为目录,输出目录下文件的数量;若文件不存在,输出提示信息 '文件不存在'。假设脚本运行过程中出现文件权限不足导致无法获取文件大小或目录文件数量的情况,描述如何排查此故障。
16.6万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试
#!/bin/bash

if [ $# -ne 1 ]; then
    echo "请提供一个文件路径作为参数"
    exit 1
fi

file_path=$1

if [ -f $file_path ]; then
    file_size=$(stat -c%s "$file_path")
    echo "文件大小为: $file_size 字节"
elif [ -d $file_path ]; then
    file_count=$(ls -1 "$file_path" | wc -l)
    echo "目录下文件的数量为: $file_count"
else
    echo "文件不存在"
fi

排查权限不足故障

  1. 检查文件或目录权限:使用 ls -l 命令查看文件或目录的权限设置,确保运行脚本的用户对该文件或目录具有相应的读取权限。例如,如果文件权限是 rw-r--r--,只有文件所有者和所属组的用户有读取权限。
  2. 检查用户所属组:确认运行脚本的用户属于具有读取文件或目录权限的组。可以使用 groups 命令查看用户所属的组。如果用户不属于正确的组,可能需要将其添加到相应组中。
  3. 检查SELinux或AppArmor:如果系统启用了SELinux或AppArmor等安全模块,这些模块可能会限制脚本对文件的访问。可以暂时禁用这些安全模块(仅用于测试排查,生产环境需谨慎操作),或者配置其规则以允许脚本访问相关文件或目录。例如,在SELinux环境下,可以使用 semanage 命令调整文件上下文等相关设置。
  4. 检查挂载选项:如果文件或目录位于远程挂载的文件系统上,挂载选项可能会影响访问权限。检查挂载选项是否允许读取操作,可能需要重新挂载并指定正确的选项。例如,对于NFS挂载,可以检查 /etc/fstab 文件中的挂载配置。