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{
不是命令(但是,它标志着组命令的开始),但它也不是元字符,这就是为什么需要空格的原因。