我想建立一个bash脚本一个基本的Java类路径。
此命令的工作了所有的jar文件在我的路走:
find ~/jars | grep \.jar$
这里列出了我的道路,每行一个对所有的jar文件我想要的。
我怎么能一起加入这些行,以便它们在同一行,分隔:
并将它放入一个变量时,我调用Java我可以在我的脚本中使用?
例如:
JARS=`find ~/jars | grep \.jar$`
#### somehow make JARS into one line with : between entries
java -cp $JARS ...
你可以把它管道,并与SED变化的新线,
:
sed ':a;N;$!ba;s/\n/:/g'
全部一起,
find ~/jars | grep \.jar$ | sed ':a;N;$!ba;s/\n/:/g'
您也可以做到这一点tr
,但它留下了尾随冒号( 格伦·杰克曼评论 ):
find ~/jars | grep \.jar$ | tr '\n' ':'
基于SED:我如何替换换行符(\ n)?
如果你已经使用find
,你不需要管。
发现有-regex
和-name
选项,也有printf
可供选择:
你可以试试这个为您的要求:
find ~/jars -name "*.jar" -printf"%p "
我没有测试,但它会输出完整路径,分隔空间所有的罐子。
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