実行のために複数のPython / Perlスクリプトを1つのbashスクリプトに統合する方法は?

実行のために複数のPython / Perlスクリプトを1つのbashスクリプトに統合する方法は?

私は次のPerlスクリプトを持っています(これはPythonや他のスクリプト言語で動作しますが):script1.pl、、script2.plscript3.pl

これらのスクリプトは、ユーザーが入力フラグを使用して実行し、出力が保存されたファイルになるように作成されました。

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`

input1これで、ユーザーが単に消費し、その代償として出力を取得できる実行可能なbashスクリプトを作成したいと思いますfinal_output

Perlスクリプトを使用してこれを行う方法は次のとおりですexecute.sh

#!/bin/sh

source ~/.bash_profile

FLAG1="--i=$1"

perl script1.pl $FLAG1

コマンドラインで実行可能execute.sh input1.tsv

3つのスクリプトの例で、中間出力を中間スクリプトにパイプして1つのexecute.shスクリプト(outputs1into script2.ploutputs2intoscripts3.plなど)を生成するにはどうすればよいですか?

Perl / Pythonスクリプトを再構築せずにこれを行う方法はありますか?

ベストアンサー1

あなたが望むものを示すために書く3行はい有効なbashスクリプト:スクリプトは、シェルが順番に実行する一連のコマンドにすぎません。

必要な追加コードは、script1.pl一時ファイルをクリーンアップして生成するだけですscript2.pl。絶対パスを使用して場所を指定することもできますscript{1,2,3}.pl

#!/bin/sh
trap 'rm outputs1 outputs2' EXIT

perl script1.pl --i "$1"
perl script2.pl --i outputs1
perl script3.pl --i outputs2

$1スクリプトに渡された最初の引数の値を表すため、次のように呼び出されます。

execute.sh input1.tsv

予想通り。

特定の出力ファイルを生成するためにハードコードされているように見えるため、3つのスクリプト間でパイプラインを実際に設定することはできません。

おすすめ記事