2013-05-06 140 views
1

我想在bash脚本中构建基本的Java类路径。从unix命令行上的文件中的行创建路径

此命令的工作了所有的jar文件在我的路走:

find ~/jars | grep \.jar$ 

此列出我的路径上所有jar文件我想,每行一个。

如何将这些行连接在一起,以便它们位于同一行上,并由:分开,并将其放入我可以在调用Java时在脚本中使用的变量中?

如:

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

回答

1

可以通过管道将它与SED更换新线,

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: How can I replace a newline (\n)?

+0

'tr'解决方案留给你一个尾随冒号 – 2013-05-06 13:08:26

+0

好的。我更新我的答案表明如此。谢谢。 – fedorqui 2013-05-06 13:10:38

2

,如果你已经使用find,你不需要管。

发现有-regex-name选项,也有printf可供选择:

你可以试试这个为您的要求:

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

我没有测试,但它会输出全路径的所有罐子,空间分开。

+0

好的!另外,是否有可能为标签建议提供一些降价提议?我想取消两个我建议在http://stackoverflow.com/tags/synonyms?filter=suggested:bash别名和命令unix – fedorqui 2013-05-06 09:24:49

+0

@fedorqui我甚至不知道SO有这个功能。 :D不知道该怎么做..对不起。 – Kent 2013-05-06 09:27:57

+0

哈哈,只要去http://stackoverflow.com/tags/bash/synonyms和http://stackoverflow.com/tags/unix/synonyms和up/downvote。如果你想,当然!一切都在http://stackoverflow.com/privileges/suggest-tag-synonyms解释 – fedorqui 2013-05-06 09:29:13

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