2017-03-31 6 views
2

前のコマンドの結果を実行する必要がありますが、どのように処理できるか分かりません。前のコマンドラインの出力を実行

私は、サーバーにログインするための命令を返す最初のコマンドを持っています。そして、その直後に実行したいのです。たとえば、ドッキングウィンドウのログイン...

私-最初のコマンドが返す

私はこのために $(!!)を使用

> my-first-comnand | execute the result of my-first-command

答えて

1

これは私が信じるべきことです。

my-first-command | bash

+0

Hexagenicに感謝します。 my-first-command | sh ** also – Victor

+0

@ user7544861これらは同一ではありません。shはbashよりも制限のある言語を使用しています。 '/ bin/sh'が' bash'へのハードリンクであっても、これが異なる場所についてはttps://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html '/ bin/sh'は' ash'や 'dash'のような別のシェルによって提供されますが、さらに多くの変更があります。 –

1

。チャールズが指摘するように、これは皆がやりたいことではないかもしれませんが、それは私のために働き、他の答えよりも私の目的に合っています。

$ find ./ -type f -name "some.sh" 
$ $(!!) 

!!最後のコマンドを保持しており、$()に置くことは、それが実行されます可能変数です。

これは、$()が変数として扱われるため、出力で他のアクションを実行する場合にも便利です。

+0

これは**以前のコマンドを再実行したことです**。それが遅い/高価な場合、それは長い時間がかかることがあり、出力はまったく同じではないかもしれません。 –

+0

また、コマンドの解析方法も異なります。もし出力が 'printf '%s \ n" "foo bar" 'ならば、それをシェルにパイプしたり、' eval'で実行した結果は引用符で囲まれていない展開と異なります。 'foo bar'という文字列を出力し、後者は文字列' '" foo'を1行、文字列 '' bar''を2行目として出力します。[BashFAQ#50](http://mywiki.wooledge.org/BashFAQ/050)。 –

+0

個人的には、コマンドを実行する前に出力をチェックしたいので、私はコマンドを再実行する方が好きです。展開の違いに応じて、私は別の解決策を想像したいと思います –

関連する問題