![如何使用Bash select命令显示不同的目录内容?](https://linux22.com/image/164350/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8Bash%20select%E5%91%BD%E4%BB%A4%E6%98%BE%E7%A4%BA%E4%B8%8D%E5%90%8C%E7%9A%84%E7%9B%AE%E5%BD%95%E5%86%85%E5%AE%B9%EF%BC%9F.png)
答案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 构造将扩展为一个空列表,这通常是您想要的。