MST
星途 面试题库

面试题:Bash脚本中的代码审查 - 逻辑优化

以下是一段Bash脚本代码,用于检查一个目录下是否存在特定后缀名的文件,并输出文件路径。请审查代码并优化逻辑,使其更高效和健壮。 ```bash #!/bin/bash DIR="/your/directory/path" SUFFIX=".txt" for file in $DIR/* do if [[ $file == *$SUFFIX ]]; then echo $file fi done ```
20.1万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试
#!/bin/bash
DIR="/your/directory/path"
SUFFIX=".txt"

shopt -s nullglob
for file in "$DIR"/*"$SUFFIX"
do
    echo "$file"
done
shopt -u nullglob

优化点解释

  1. shopt -s nullglob:此命令开启nullglob选项,当for循环中的通配符找不到匹配的文件时,不会将通配符本身作为一个字符串传递给file变量,而是使循环体不执行,避免了在无匹配文件时输出类似/your/directory/path/*.txt这样的错误路径。
  2. 双引号包围变量:在for循环和echo语句中,对变量$DIR$file使用双引号包围,防止文件名中包含空格或其他特殊字符时出现错误。例如,如果文件名是file with space.txt,不加双引号可能会被误识别为多个参数。
  3. shopt -u nullglob:关闭nullglob选项,恢复默认行为,避免对脚本后续可能使用通配符的部分产生影响。