从unix命令行上的文件中的行创build一个path

我想在bash脚本中构build一个基本的Java类path。

这个命令解决了所有的jar文件在我的path:

find ~/jars | grep \.jar$ 

这列出了我想要的path中的所有jar文件,每行一个。

如何将这些行连接在一起,以便将它们分隔开,并将其分隔开:当我调用Java时,将其放入一个variables中,可以在脚本中使用它们。

例如:

 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来做,尽管它留下了一个尾随的冒号( glenn jackman comment ):

 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