2017-02-08 5 views
0

私は仕事中の仕事を自動化しようとしています。そのうちの1つはいくつかのエイリアスを実行することです。そのうちの1つは新しいターミナルであるXTermをbashターミナルから起動します。 この端末を起動した後、私はこの新しい端末にさらにいくつかのコマンドを提供する必要があります。新しく生成された端末に引数を渡す

これはどのように達成できますか。私が考えることのできる1つの方法は、それらのタスクを処理するためにexpectスクリプトを使用することです。これは効果がありますか? 新しい端末でコマンドを実行する方法はありますか?

編集:私はこれを見つけたスクリプト内

....

execcmd="xterm -sb -sl 5000 -T "'`/usr/bin/hostname -s`.$LOADL_STEP_CLASS'" -e $path run_interactive [email protected] 

私はこれが..私はこのスクリプトにいくつかのコマンドを実行する必要が新しいのxtermを起動します一つだと思い

例えば、 "priority-level:"のような特定の文字列を探して、スクリーン上に吐き出したものを入手してください。残りは単純な正規表現になりますが、この新しいxtermとのやりとりを自動化したい。

PS:多くの人が使っているスクリプトを台無しにすることなく、この端末に引数を渡す方法はありません。元のエイリアスを変更することはできません。何らかの方法でラッパーを作成することもできます。

+0

GUI(xtermなど)を制御できないため、expectが動作しません。現在のエイリアスを表示してください –

+1

コマンドをシェルの起動ファイルに入れることはできますか? – tomasz

+0

質問を編集しました。もう一度見てください。 – ArunMKumar

答えて

0

xtermへの-e *args*のフラグは何ですか?それはあなたがそこにフィードを送り出すので、あなたが必要とする余分なステップがスクリプトやコマンドからも呼び出されるようにその引数を変更すれば、完了です。

代わりに、xtermシェルをログインシェルにして、シェル起動スクリプトを呼び出すこともできますが、環境に適したすべてのログインシェルに対して起動するという副作用があります。

+0

私がそれを供給する必要があるのは、1つのコマンドまたは一連のコマンドではなく、より多くのコマンドを実行し、その出力に基づいて他のコマンドを実行する対話型セッションです。したがって、argsの一部として実行されるexpectスクリプトを渡すと、そのジョブは実行されますか?また、もう少しあなたの選択肢について詳しく説明することができます。 – ArunMKumar

関連する問題