我有一个 glob 模式 {,**/}*.*
用于递归当前目录中的所有文件以及子文件。在终端中,如果我运行 echo {,**/}*.*
,它会输出当前目录中的所有文件以及嵌套目录。当我运行包含这一行的 shell 脚本时,它只深入一个目录。
我明白 terminal has different behaviour than the shell : 添加 shopt -s extglob
没有任何区别。
#!/bin/bash
shopt -s extglob
echo {,**/}*.*
我在 MacOSX 上 Bash 4 terminal和 shopt -s globstar
启用。
请您参考如下方法:
感谢@Aserre 和@anubhava,这确实是 bash 路径和确保启用 globstar 的组合(对于 MacOSX)。完整的脚本是:
#!/usr/local/bin/bash
shopt -s globstar
echo {,**/}*.*
是的 ./**
就足够了,但这不是我的问题:)