私は少し難しさに直面しました。いくつかの後置式を提供し、5秒以内に解決策を期待するアプリケーションがあります。解決策がない場合は終了し、それ以外の場合は追加の式を提供します。
インターフェイスは次のとおりです。
<some text>
<expression>
<expecting my result>
<next expression>
<expecting my result>
など。
式が1つしかない場合は、tail -1
コマンドを使用して最後の行を取得して式を取得し、dc
コマンドを使用してそれを評価したいと思います。ただし、(これまで)式の数がわからないため、使用できず、読み取られた文字列が数字(式など)で始まらない限り、いくつかのループを実行する必要があります。
したがって、2つのスクリプトを使用したいと思います。
- アプリケーションを起動すると、常にテキスト出力がfile1に送信され、バックグラウンドで実行されます(スクリプト1)。
- スクリプト file1(script2) の最後の行を読み取り、ソリューションを評価して file2(script2) に送信します。
- file2からソリューションを読み取り、file2を削除して(次の解決策のために)、アプリをフォアグラウンドにインポートし、ソリューションを送信し、アプリをバックグラウンドに送信します(スクリプト1)
しかし、これは私にとって少し複雑に見えます。
この問題を解決するために手順を簡素化する方法に関する提案はありますか?
答え1
不要なので、名前付きパイプを調べることをお勧めします。文書誰にでも。
しかし、次のようになります。
mkfifo mypipe
script1 <mypipe | grep --line-buffered '^[0-9]' | dc >mypipe
あなたが望むものに近づく必要があります。しかし、これは、入力に実際に式の結果を印刷するp
ために必要なコマンドがあると仮定します。dc