./*/可移植吗?

问题描述 投票:3回答:1

我经常在类似for的循环中使用./*/

for d in ./*/; do
  : # do something with dirs
done

匹配当前工作目录中的所有非隐藏目录,但是我不确定这是否是一种可移植的方法。我在系统上安装了bash,dash和ksh,并且可以与所有工具一起使用,但是由于POSIX spec对此没有任何说明(或者它隐含地说明了问题,我错过了),我想我不能依靠它。我也检查了POSIX bug reports,但无济于事,也没有提及它。

其行为实现或文件系统相关吗?我在这里想念什么吗?我怎么知道它是否便携?

shell sh posix glob
1个回答
0
投票

POSIX标准(来自opengroup)指出,'/'仅与扩展文件名中的斜杠匹配。由于Unix / Linux不允许在文件名中使用'/',因此我认为在Unix / Linux系统上这是一个安全的假设。

在Windows上,文件名中似乎不允许使用'/',但我不是Window的专家。

来自https://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_13_03

2.13.3用于文件名扩展的模式

...

路径名中的斜杠字符应通过在模式中使用一个或多个斜杠来明确匹配;它既不能与星号或问号特殊字符匹配,也不能与括号表达式匹配。模式中的斜线应在方括号表达式之前标识;因此,不能在用于文件名扩展的模式括号表达式中包含斜杠。...

© www.soinside.com 2019 - 2024. All rights reserved.