私は内のコマンドについて読み{ }
ました、新しいので開始せずに現在のシェルで起こります次のコマンド:
for i in {1..50000} ; do echo $i ; done
と同じように動作するはずです
for i in {1..50000} ; { do echo $i } ; done
しかし、それは私にエラーを与えます:
zsh: parse error near
'`
何か案が?
私は内のコマンドについて読み{ }
ました、新しいので開始せずに現在のシェルで起こります次のコマンド:
for i in {1..50000} ; do echo $i ; done
と同じように動作するはずです
for i in {1..50000} ; { do echo $i } ; done
しかし、それは私にエラーを与えます:
zsh: parse error near
'`
何か案が?
私はあなたが2つの概念を混同した(そしてタイプミスをした)と思います。 セクション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; )
彼らは、サブシェルを呼び出す括弧(中括弧ではない)とは異なると説明しています。さらにドキュメントの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/コマンドのリストはセミコロンで終了する必要があります;