(これは、Pythonや他のスクリプト言語に適用されますが)私は、次のPerlスクリプトを持っている:script1.pl
、script2.pl
script3.pl
Python/Perlスクリプトを書き直すことなく、出力をbashスクリプトで一緒にパイプする方法はありますか?
これらのスクリプトが書かれた方法は、ユーザーが入力フラグとそれらを実行すると、出力が保存されたファイルです。 。
perl script1.pl --i input1.tsv ## this outputs the file `outputs1`
perl script2.pl --i outputs1 ## this outputs the file `outputs2`
perl script3.pl --i outputs2 ## this outputs the file `final_output`
(Pythonistasの場合、これはpython script1.py
ある)
今、私は、ユーザーが単にリターンfinal_output
にinput1
で動作し、出力を取得することができます実行可能なbashスクリプトを作成したいと思います。
ここで私が唯一のperlスクリプト、execute.sh
でこれを行うだろう方法は次のとおりです。私はパイプどのように、3つのスクリプトと私の例えば
#!/bin/sh
source ~/.bash_profile
FLAG1="--i=$1"
perl script1.pl $FLAG1
コマンドラインで実行することができ
execute.sh input1.tsv
う中間の出力を中間スクリプトに作成してexecute.sh
スクリプトを作成します。 outputs1
をscript2.pl
に、outputs2
をscripts3.pl
に、
perl/pythonスクリプトを書き直すことなくこれを行う方法はありますか?
EDIT:追加情報:問題は、実際に出力がわからないことです。ファイル名は、元のinputs1.tsvに基づいて変更されます。さて、私は出力のファイル拡張子を知っていることは事実です。しかし、outputs1とoutputs2は同じファイル拡張子を持ちます。
正しいファイル名でスクリプトを呼び出すことで、スクリプトを使用している場合を除き、手作業と同じようにスクリプトを呼び出します。マジックニードはありません。 – hobbs
スクリプトに特定の入出力ファイルが必要ですか?通常は、 ' outputs2'(もちろんスクリプトを書くことができます) –
Ryan
スクリプトが常にハードワイヤードのファイル名を出力する場合、スクリプトを変更する以外の方法はありません。 – choroba