メインシェルでコマンドブロックを実行するには? [コピー]

メインシェルでコマンドブロックを実行するには? [コピー]

全体として、メインシェル内で一連のコマンドを実行してみましたが、学んだ方法はサブシェルでのみ機能します。

ベストアンサー1

何を意味するかによって異なります全体的に

複数のコマンドをシェルに送信し、そのコマンドをすべて入力するまでシェルでコマンドの実行を開始したくない場合は、次のようにします。

cmd1; cmd2

または

コマンド1Ctrl+VCtrl+Jコマンド2

(または角かっこ貼り付け(bind 'set enable-bracketed-paste on')を有効にし、角かっこ貼り付けをサポートする端末からコマンドを貼り付けます。)

または:

{
cmd1
cmd2
}

行にしてください。

たとえば、同じstdinまたはstdoutを共有するようにグループ化するには、次のようにします。

{ cmd1; cmd2; } < in > out

または

eval 'cmd1; cmd2' < in > out

bash対応する匿名関数がないため、独自の変数とオプションの範囲で実行するにはzsh一時関数を定義する必要があります。

f() { local var; var=foo; bar;}; f

おすすめ記事