为什么不支持大括号扩展?

为什么不支持大括号扩展?

我需要进行任何配置才能启动大括号扩展吗?当我运行时mkdir {1..10},它只是创建一个目录命名{1..10}

答案1

虽然大括号扩展类似{1,2}起源于70 年代末,并在 80 年代末、90 年代初csh找到了类似 Bourne 的 shell ,bash但该变体在 1995 年首次出现(2.6-beta4)。zshpdksh{n1..n2}zsh

bash2004 年 (3.0) 和ksh932005 年 ( ksh93r) 复制了它。

您尝试使用的 shell 可能不是这些,或者是bash和的旧版本ksh93

答案2

{x..y}范围大括号扩展在 bash 3.0-alpha 中实现。为了帮助我们和您自己,请展示您的echo "$BASH_VERSION"输出。

那么答案是:如果 mkdir {1..10}创建一个具有名称的目录{1..10},那么您正在使用先前的 bash 版本bash 3.0-alpha。在这种情况下,您可以使用 for 循环构造:

for ((i=1;i<=10; i++)); do mkdir "$i"; done

答案3

检查你的 Bash 版本:

$ bash -version
GNU bash, version 4.1.7(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

还要检查是否mkdir以某种奇怪的方式使用别名:

$ alias |grep mkdir
alias md='mkdir'

相关内容