gpt4 book ai didi

bash - 没有文件时如何处理 `*`扩展

转载 作者:行者123 更新时间:2023-11-29 09:27:41 25 4
gpt4 key购买 nike

我正在制作一个 shell 脚本,它允许您使用 YAD 从目录中选择一个文件。我这样做:

  list='';
exc='!'
for f in "$SHOTS_NOT_CONVERTED_DIR"/*;do
f=`basename $f`
list="${list}${exc}${f}"
done

问题是,如果该目录中没有文件,我最终会选择 *

在 Bash 中完成这项工作的最简单、最优雅的方法是什么?如果那里没有文件,目标是有一个列表。

最佳答案

* 扩展称为 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

关于bash - 没有文件时如何处理 `*`扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35679869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com