我正在创建一个shell脚本,允许您使用YAD从目录中选择文件。我这样做:
list='';
exc='!'
for f in "$SHOTS_NOT_CONVERTED_DIR"/*;do
f=`basename $f`
list="${list}${exc}${f}"
done
问题是,如果该目录中没有文件,我最终会选择*
。
在Bash中使用这种方法最简单,最优雅的方法是什么? 如果那里没有文件,目标是有一个空列表。
答案 0 :(得分:3)
*
扩展称为 glob表达式。 bash手册将其称为filename expansion。
您需要设置nullglob
选项。如果glob表达式找不到文件,那么这样做会给你一个空结果:
shopt -s nullglob
list='';
exc='!'
for f in "$SHOTS_NOT_CONVERTED_DIR"/*;do
# Btw, use $() instead of ``
f=$(basename "$f")
list="${list}${exc}${f}"
done