我有一个 glob 模式 {,**/}*.* 用于递归当前目录中的所有文件以及子文件。在终端中,如果我运行 echo {,**/}*.*,它会输出当前目录中的所有文件以及嵌套目录。当我运行包含这一行的 shell 脚本时,它只深入一个目录。

我明白 terminal has different behaviour than the shell : 添加 shopt -s extglob 没有任何区别。

#!/bin/bash 
 
shopt -s extglob 
echo {,**/}*.* 

我在 MacOSX 上 Bash 4 terminalshopt -s globstar 启用。

请您参考如下方法:

感谢@Aserre 和@anubhava,这确实是 bash 路径和确保启用 globstar 的组合(对于 MacOSX)。完整的脚本是:

#!/usr/local/bin/bash 
 
shopt -s globstar 
 
echo {,**/}*.* 

是的 ./** 就足够了,但这不是我的问题:)


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!