2012-04-04 22 views
2

2つの文字列変数をbashスクリプトの引数として分離する際に問題が発生しています。 bashが誤って私の文字列を読んでいるので、複数の文字列引数を持つBashスクリプト

#!/bin/bash 


DATA1=$1 
DATA2=$2 

しかし、DATA1とDATA2は、私が意図したものではありません:私のbashスクリプトはそうのような2つの引数を取ります。 DATA2は複雑な(相対的な)文字列を単一の引数にするのに問題があるため、入れたい最初の部分だけです。

私はこのような変数を持つJavaアプリからこのスクリプトを呼び出す:

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


myscript.sh m1 m2 

平方メートルの最初の部分のみがbashスクリプトでDATA1に渡されます。私は一重引用符と二重引用符で全体をラップしようとしましたが、第二引数としてm2全体を受け入れることはできません。

2つの文字列引数を作成する際の助けに感謝します。それは私の作品

+4

に分割され、私はこの問題は、バッシュの端に比べてのJava端にある可能性が高いと思います。どのようにスクリプトを起動していますか? – ruakh

+6

引数を設定するコードを含め、Javaからスクリプトを呼び出すために使用するEXACTコード( 'Runtime.exec()'、 'ProcessBuilder'?)を表示する必要があります。そうでなければ、我々はただ推測している。 –

+0

m2の最初の部分がDATA1に渡されますか? m2の最初の部分がDATA2に渡されることを意味しますか? – Alvin

答えて

0

、以下を参照してください

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

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

それはexec(String command, String[] envp, File dir)(src.zipでのソースコードを参照してください)メソッドexec(command,null,null)を呼び出します。

メソッドexec(String command、String [] envp、File dir)StringTokenizerによるparseコマンドです。だから、テキスト"some data"または"\"some data\""somedata(または"somedata "

関連する問題