答案1
这*
就是所谓的“全局” 并且将被 bash 扩展为“当前目录中的所有文件”,因此它基本上会扩展为当前目录中所有文件的空格分隔列表(这是许多 bash 内置流控制通常期望的格式结构体)。
Glob 不仅可以独立使用,还可以作为表达式的一部分使用,因此假设您有一个存储在 bash 变量中的目录$searchdir
(命名 bash 变量时要小心,以免意外覆盖重要的环境变量,例如$PATH
)
select s in "$searchdir"/*
将扩展为“中的所有文件$searchdir
”。
笔记但是,如果目录恰好为空,则表达式将等于字面意思 *
(或字面意思/the/actual/value/pointed/to/by/searchdir/*
)除非您设置了nullglob
选项通过
shopt -s nullglob
然后,如果目录为空,则 glob 构造将扩展为一个空列表,这通常是您想要的。