スクリプトコマンドを起動してターミナルスクリプトに渡す


1

ユーザーの入力を待つスクリプト(コマンドを入力してからリターンを押すなど)を持っています。それは永遠にループします。たとえば、エントリがうるう年か、Minecraftサーバーかをユーザーに通知します。ユーザーとして次のように私はそれを取得します:

open a.command

ユーザーがそのスクリプトにエントリを入力するように定期的に動作するスクリプトを作成しようとしています。

私はこのようなもので運がありません:

i=5;
while [ $i -gt 0 ]; do
  i=$(( $i - 1 )); sleep 10; # do this once every 10 seconds for i times
  {{send text to the script a.command in the newly opened window}}
done & open a.command > a.out; 

a.outに出力する必要はありません。結果をそのファイルに保存するだけでした。

回答:


0

whileループ内でプロセス間通信を行う代わりに、標準出力に出力し、ループ全体をa.commandにパイプします。

したがって、スクリプトは次のようになります。

i=5;
while [ $i -gt 0 ]; do
  i=$(( $i - 1 )); sleep 10; # do this once every 10 seconds for i times
  echo "Jan 1, 1970" # just echo or print your input here
done | a.command > a.out;

最後の行では|なく、文字の使用に注意してください&


これはうまくいかないようです。a.commandスクリプトは別のターミナルウィンドウで開きますが、エコーデータは表示されません。a.commandスクリプトは単純です:
Seattleda

c = 20; while [$ c -gt 0]; do c = $(($ c-1)); echo "チェックする年を入力し(4桁)、続いて[ENTER]:"年を読みますif((( "$ year"%400)== "0"))|| ((( "$ year"%4 == "0")&&( "$ year"%100!= "0"))); 「$ yearはうるう年です」とエコーします。そうでなければ、「これはうるう年ではありません」とエコーします。Fiを行って
Seattleda

うーん、a.commandはシェルスクリプトですか?openシェルスクリプトの場合は、使用する必要がない場合があります。
8bittree 14年

4桁がうるう年かどうかを示すスクリプトのようなものです。
シアトルダ14年

この最終的なアプリケーションは、ターミナルウィンドウで実行され、そのスクリプトのようにユーザー入力を受け入れるminecraftサーバーにSave Allコマンドをフィードすることです。Javaで起動します。
シアトルダ14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.