我想在bash脚本中构建一个基本的Java类路径。
此命令可以处理我路径中的所有jar文件:
find ~/jars | grep \.jar$
这列出了我在路径上想要的所有jar文件,每行一个。
如何将这些行连接起来,使它们在一行上,以:
分隔,并将其放入我调用Java时可以在脚本中使用的变量中?
E.g:
JARS=`find ~/jars | grep \.jar$`
#### somehow make JARS into one line with : between entries
java -cp $JARS ...
答案 0 :(得分:2)
如果您已经使用过find
,则不需要管道。
找到-regex
和-name
选项,还有printf
可用:
您可以根据您的要求尝试:
find ~/jars -name "*.jar" -printf"%p "
我没有测试,但它会输出所有罐子的完整路径,空间分隔。
答案 1 :(得分: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' ':'
答案 2 :(得分: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