4

継承されたシェル スクリプトを扱っていて、今まで見たことのない構文に遭遇しました。

host = 192.[mask]
port = 2[mask]

( echo open ${host} ${port}
    ...about six other commands
  echo exit ) | telnet

さて、これは縦棒まで意味があります。サーバー上でコマンドを開いて実行するためのコマンドのみ。

しかし、telnet電話は実際に何をしているのでしょうか? この構文 (括弧とバー) は何を意味しますか? 私の推測では、telnet を開き、telnet 内から次のコマンドを実行することを暗示していますが、念のために言っておきます。

4

2 に答える 2

6

括弧は、その中にあるすべてのコマンドの出力を、コマンドの入力に向かう1 つの Unixパイプ にグループ化するためにあります。|telnet

ただし、括弧はサブシェルを作成し、何も必要ないため、次のことができます。

{
    telnet_input_line_1
    telnet_input_line_2
    telnet_input_line_3
    (...)
} | telnet 

で置き換えることもできtelnetますnetcat。スクリプティング用に設計されたほうが適切です。

于 2013-03-27T23:47:17.450 に答える
4

|「パイプ」であり、「open ...」テキストを に効果的に入力しtelnetます。telnet通常、キーボードから入力を読み取る場所ではなく、前のコマンドから読み取ります。

括弧でコマンドをグループ化して、すべての出力がtelnet.

于 2013-03-27T23:47:34.573 に答える