2

bashスクリプトの引数として2つの文字列変数を分離するのに問題があります。私のbashスクリプトは、次のように2つの引数を取ります。

#!/bin/bash


DATA1=$1
DATA2=$2

ただし、bashが文字列を誤って読み取っているため、DATA1とDATA2は意図したものではありません。DATA2は、複雑な(比較的)文字列を単一の引数にするのに問題があるため、私が入れたかった引数の最初の部分にすぎません。

このスクリプトは、次のような変数を使用してJavaアプリから呼び出します。

String m1 = "some data";
String m2 = "some more"+mystring+"even more data"+anotherstring;


myscript.sh  m1 m2

m2の最初の部分だけがbashスクリプトでDATA1に渡されます。全体を一重引用符と二重引用符で囲んでみましたが、m2全体を2番目の引数として受け入れることができません。

2つの文字列引数を作成するのに役立つことはありがたいです。

4

1 に答える 1

0

それは私のために働きます、見てください:

Runtime.getRuntime().exec(new String[]{"/bin/sh", "/tmp/myscript.sh", m1,m2});

あなたのコードは以下を呼び出します:Runtime.getRuntime().exec(String)

メソッドを呼び出しますexec(command,null,null)(src.zipのソースコードを参照)exec(String command、String [] envp、File dir)

メソッドexec(String command、String [] envp、File dir)は、StringTokenizerによるコマンドを解析します。したがって、テキスト"some data"またはは(または)"\"some data\""に分割されますsome data"some data "

于 2012-04-04T06:55:56.120 に答える