1

基本的な Java クラス パスを bash スクリプトで作成したいと考えています。

このコマンドは、すべての jar ファイルをパスに入れるように処理します。

find ~/jars | grep \.jar$

これにより、パスに必要なすべてのjarファイルが1行に1つずつリストされます。

これらの行を結合して 1 行にまとめ、 で区切って:、Java を呼び出すときにスクリプトで使用できる変数に入れるにはどうすればよいでしょうか?

例えば:

JARS=`find ~/jars | grep \.jar$`
#### somehow make JARS into one line with : between entries
java -cp $JARS ...
4

3 に答える 3

2

を既に使用findしている場合は、パイプは必要ありません。

find にはオプションが-regexあり、次の-nameオプションもprintf利用できます。

あなたの要件のためにこれを試すことができます:

find ~/jars -name "*.jar" -printf"%p "

私はテストしませんでしたが、スペースで区切られたフルパスですべてのjarを出力します。

于 2013-05-06T09:21:00.727 に答える
1
jars=($(find ~/jars -type f -name \*.jar))   # save paths into array
classpath=$(IFS=:; echo "${jars[*]}")   # convert to colon-separated
java -cp "$classpath" ...               # and use it
于 2013-05-06T13:06:47.420 に答える
1

パイプして、 sed change new line for を使用できます,

sed ':a;N;$!ba;s/\n/:/g'

すべて一緒に、

find ~/jars | grep \.jar$ | sed ':a;N;$!ba;s/\n/:/g'

で行うこともできますがtr、末尾にコロンが残ります ( glenn jackman comment ):

find ~/jars | grep \.jar$ | tr '\n' ':'

SEDに基づく: 改行 (\n) を置き換えるにはどうすればよいですか?

于 2013-05-06T09:08:34.070 に答える