0

スクリプトをさまざまな環境で実行しているため、開始するプログラムのパスと名前を変数に格納します$CreateSequenceDictionary

このプログラムはパラメータR=を使用するO=ため、コマンド全体を引用符で囲みます""。これらがないと、プログラムはパラメータなしで開始されます。

そして今、私の問題:$referenceこの変数の内容を渡す代わりに。私はこれを試しました:

"java -jar $CreateSequenceDictionary R=$reference O=output" >mlogfile

そして多くのバリエーション( `` "" eval \など)は成功しませんでした。

変数に格納されたパラメータを使用して変数に格納されたプログラムを実行できるように、コマンドをどのように調整すればよいですか?

編集:ターミナルでコマンドを使用する必要がある場合は、次のようになります:

 java -jar /path/CreateSequenceDictionary.jar R=input O=output

ただし、変数からプログラムの名前を取得し、変数から入力ファイルの名前も取得したいと思います。

4

1 に答える 1

2

周囲の引用符なしでそれを行うことができます。

java -jar $CreateSequenceDictionary R=$reference O=output > mlogfile

Bashは、コマンドを実行する前に変数を展開します。

R=とオプションを条件付きで含めたい場合は、次のO=ように試すことができます。

CreateSequenceDictionary="your_Program"
r_option ="$reference"
o_option="output"

arguments=()
[[ "$r_option" ]] && arguments+=("$r_option")
[[ "$o_option" ]] && arguments+=("$o_option")

java -jar $CreateSequenceDictionary "${arguments[@]}" > mlogfile

これにより、追加の引数がオンザフライで作成され、関連する*_option変数が空の引数がスキップされます。

于 2012-12-03T10:40:24.263 に答える