Bash 使用{}不';行不通

Bash 使用{}不';行不通,bash,Bash,我阅读了有关{}中的命令,这些命令发生在当前shell中,而不启动新的shell,因此以下命令: {1..50000}中i的;不要重复$i;完成 工作原理应与相同 {1..50000}中i的;{do echo$i};完成 但这给了我一个错误: zsh:附近的分析错误do'` 有什么想法吗?我想你把两个概念弄混了(而且打错了)。 文件 第3.2.4.3节中说: {} { list; } Placing a list of commands between curly bra

我阅读了有关
{}
中的命令,这些命令发生在当前shell中,而不启动新的shell,因此以下命令:

{1..50000}中i的
;不要重复$i;完成

工作原理应与相同

{1..50000}中i的
;{do echo$i};完成

但这给了我一个错误:

zsh:附近的分析错误
do'`

有什么想法吗?

我想你把两个概念弄混了(而且打错了)。 文件 第3.2.4.3节中说:

   {}
     { list; }
    Placing a list of commands between curly braces causes
    the list to be executed in the current shell context.
    No subshell is created. 
    The semicolon (or newline) following list is required.
他们解释说它不同于用括号(不是大括号)调用子shell的
(list;)
。 在文档的第3.5.1节中,它们进一步解释了大括号的扩展(大括号内容扩展为值列表)

实际上:

for i in {1..50000} 
是大括号展开:大括号之间的内容替换为整数列表

在for命令之后,您希望执行的操作应该是:

for i in {1..5000}
do
{ echo $ii ; echo "something else or run a command"; echo "maybe another"; }
done
注:

1/{后面必须跟一个空格

2/do命令不应位于大括号中


3/命令列表必须以分号结尾;

您的错误是
zsh
,但您的问题是
bash
。您使用的是哪一个?Oups,我在写我的答案时没有看到。希望它对zsh也有效。@dogbane很抱歉混淆,我使用的是bash
{
不是命令(但是,它标志着组命令的开始),但它也不是元字符,这就是为什么需要空格的原因。