我阅读了关于{ }
, 发生在当前 shell 中的命令而没有启动新的所以以下命令:
for i in {1..50000} ; do echo $i ; done
应该与
for i in {1..50000} ; { do echo $i } ; done
但它给了我一个错误:
zsh: parse error near
做'`
任何想法?
我阅读了关于{ }
, 发生在当前 shell 中的命令而没有启动新的所以以下命令:
for i in {1..50000} ; do echo $i ; done
应该与
for i in {1..50000} ; { do echo $i } ; done
但它给了我一个错误:
zsh: parse error near
做'`
任何想法?
我认为您混淆了(并打错了字)两个概念。 第 3.2.4.3 节中的文档http://www.gnu.org/software/bash/manual/bashref.html说:
{}
{ 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/ 命令列表必须以分号结尾;