我读到了{ }
中的命令,发生在当前shell中而没有启动新的所以以下命令:
for i in {1..50000} ; do echo $i ; done
应与
相同 for i in {1..50000} ; { do echo $i } ; done
但它给了我一个错误:
zsh: parse error near
do'`
任何想法?
答案 0 :(得分:2)
我认为你混淆了(并写了一个错字)两个概念。 文档http://www.gnu.org/software/bash/manual/bashref.html 在第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.
他们解释说它与(list; )
不同,带括号(不是括号)会调用子shell。
进一步在文档中,在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 /命令列表必须以分号结尾;