1 shell zsh shell-script wildcards
我要检查当前目录下的文件是否存在与扩展abc,bak或者tmp,或者指定的文件tmpout.wrk。我无法在 zsh 中使用它(最终是函数的一部分)。它运行,但未能正确检测。
if [[ -f *.(abc|bak|tmp) || -f tmpout.wrk ]]; then
echo 'true';
else
echo 'false';
fi
Run Code Online (Sandbox Code Playgroud)
要测试 glob 是否至少返回一个文件,您可以执行以下操作:
if ()(($#)) (*.(abc|bak|tmp)|tmpout.wrk)(NY1); then
echo true
else
echo false
fi
Run Code Online (Sandbox Code Playgroud)
要在符号链接解析后检查其中至少一个是常规文件,请添加-. glob 限定符:
if ()(($#)) (*.(abc|bak|tmp)|tmpout.wrk)(NY1); then
echo true
else
echo false
fi
Run Code Online (Sandbox Code Playgroud)
()(($#))是一个匿名函数,我们将 globs 的结果传递给它。该函数 ( (($#)))的主体只是测试非零参数的数量。
N当 glob 限定符nullglob为该 glob打开时(当它不匹配任何文件时,使 glob 扩展为空)
Y1将扩展限制为最多一个文件。这是性能优化。
-在符号链接解析后考虑下一个 glob 限定符。
.仅考虑常规文件(因此这里的常规文件或符号链接最终会解析为常规文件,就像[ -f file ]命令一样)。
| 归档时间: |
|
| 查看次数: |
990 次 |
| 最近记录: |