2

これがばかげた質問のように思われる場合は申し訳ありませんが、私はbashスクリプトを学んでいます. 学校のプロジェクトでは、Unix で動作する RTX をコーディングする必要があります。ターミナルでプロセスとして実行され、ユーザー入力を受け取り、画面に出力します。オーバーフローしたり失敗したりすることなく、多くのユーザー入力にすばやく応答できることをテストする bash スクリプトを作成したいと考えています。

私の主な問題は、RTX が開始されると、RTX が終了するまで bash スクリプトがその行で停止し、ループを端末に出力することです (意図したように RTX プロンプトに出力するのではなく)。

RTX をバックグラウンドで実行しようとしましたが、うまくいきませんでした。RTX が bash スクリプトで実行されている間に、入力を RTX にリダイレクトする方法を見つける必要があります。Google 検索では、私が理解できる/適応できる例が見つかりませんでした。どんな助けでも大歓迎です。

#!/bin/bash
# declare STRING variable
STRING="RTX Worked =D"
#Start the rtx in a new process, stuck on this line until rtx terminates. 
./main
#Somehow redirect io to the rtx. 
    for i in `seq 1 100`;
    do
            echo $i 
    echo " \n"
    done    
echo $STRING
4

1 に答える 1

1

コプロセスを bash で実行してから、コマンドをパイプ経由でコプロセスに送信できます。

coproc サブコマンドの下にある Bash マニュアルを参照してください。

私がそれをしてからしばらく経ち、例を失いましたが、次のようなものです

coproc RTX ./main

for i in 'seq 1 100`;
do
     echo $i >&{RTX[1]}
done
于 2011-11-12T11:40:45.273 に答える