christian Martin Asked: 2018-02-24 13:42:32 +0800 CST2018-02-24 13:42:32 +0800 CST 2018-02-24 13:42:32 +0800 CST CentOS7 与 RHEL7 中可能出现的逻辑或语义错误 772 几周前我遇到了这个问题,但我认为这是我的系统出了问题。但经过几次调查,我相信这可能是一个错误。或者也许我错了。在 CentOS7 上尝试echo或touch多个文件时,例如:echo file{a..c}.txt在 CentOS7 上执行此操作会返回file{a..c}.txt ,但在 RHEL7 上执行相同的命令会返回:filea.txt fileb.txt filec.txt 还有其他人有同样的问题吗? rhel centos 2 个回答 Voted Best Answer Jeff Schaller 2018-02-24T17:18:40+08:002018-02-24T17:18:40+08:00 如果您在 CentOS 系统上的 shell 是 ,您会看到这种行为dash,它不会像这样扩展大括号范围: $ for shell in bash dash ksh > do > echo in $shell: > $shell -c 'echo file{a..c}.txt' > done in bash: filea.txt fileb.txt filec.txt in dash: file{a..c}.txt in ksh: filea.txt fileb.txt filec.txt 根据您在 CentOS 系统上使用 zsh的评论。ignorebraces我可以通过设置shell 选项来重现该行为: $ set -o|grep ignorebraces ignorebraces off $ echo {1..3} 1 2 3 $ set -o ignorebraces $ echo {1..3} {1..3} $ set +o ignorebraces $ echo {1..3} 1 2 3 Kusalananda 2018-02-24T23:13:19+08:002018-02-24T23:13:19+08:00 这取决于您在各种系统上使用的 shell。 大括号扩展是对 shell 的 POSIX 标准的扩展,并不是每个 shell 都实现它。那些这样做的人可能会以不同的方式做到这一点。 dashshell 不实现大括号扩展: $ echo {0..9} {0..9} $ echo {1,2,3} {1,2,3} pdkshshell(在 OpenBSD 上可以找到)实现大括号扩展,但不适用于范围: $ echo {0..9} {0..9} $ echo {1,2,3} 1 2 3 、bash和shell 实现范围(数字zsh和ksh93字母) $ echo {0..9} 0 1 2 3 4 5 6 7 8 9 $ echo {1,2,3} 1 2 3
如果您在 CentOS 系统上的 shell 是 ,您会看到这种行为
dash
,它不会像这样扩展大括号范围:根据您在 CentOS 系统上使用 zsh的评论。
ignorebraces
我可以通过设置shell 选项来重现该行为:这取决于您在各种系统上使用的 shell。
大括号扩展是对 shell 的 POSIX 标准的扩展,并不是每个 shell 都实现它。那些这样做的人可能会以不同的方式做到这一点。
dash
shell 不实现大括号扩展:pdksh
shell(在 OpenBSD 上可以找到)实现大括号扩展,但不适用于范围:、
bash
和shell 实现范围(数字zsh
和ksh93
字母)