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