2016-06-08 47 views
0

我想知道我的后续实现是正确还是错误。Linux中多个路径添加到变量(Bash)

我有一个变量叫做$MY_HUGE_PATH_VARIABLE

我需要通过在这些目录中添加几个目录和所有目录来增强它。

我把它像这样:

export MY_HUGE_PATH_VARIABLE=$PATH_1/version1/*\:\ 
$PATH_2/version4/*\:\ 
$PATH_n/versionn/*\ 

这是正确的。输出路径时,*是否工作?这段脚本是否还有其他问题?我正在使用Redhat Linux机器和我的脚本在bash shell中。

我的目标是将这些文件夹中的所有jar文件包含在我的Java编译中。 我的意图是理解这个东西。 shell至今还没有给我带来任何错误,脚本是我还没有测试过的更大设置的一部分。

+0

什么你正在尝试做的可危险的。也许结帐http://unix.stackexchange.com/questions/17715/how-can-i-set-all-subdirectories-of-a-directory-into-path – Ian2thedv

+0

我有.jar文件在这些路径,我需要用于我的Java代码编译。这就是为什么我正在研究这种设置 –

+2

啊,这有点[XY问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。更新你的问题并解释你为什么要这样做。你可以编写一个bash脚本来运行你的jar,并且单独列出所有的依赖关系,或者你可以做一些类似'java -cp lib \ *。jar ;. myproject.MainClass'这似乎是你 – Ian2thedv

回答

2

编辑: - 你不需要在这里指定*,在linux下它的工作原理是这样的: -

export MY_HUGE_PATH_VARIABLE=$MY_HUGE_PATH_VARIABLE$(find $PATH_1/version1/ $PATH_2/version4/ $PATH_n/versionn/ -type d -printf ":%p") 
+0

Bash不会扫描PATH变量的子目录递归 – Ian2thedv

+1

如果你能够给出一个小的解释发生什么,我会很高兴。我对bash脚本很陌生 –

+1

这里'find'会搜索'-type' d(目录),'printf'会从''''中提供的空格分隔的路径中打印出“%p”找到'命令。 – syadav

0

请尝试以下方法:

export MY_HUGE_PATH_VARIABLE=$(find $PATH_1/version1 $PATH_2/version4 $PATH_n/versionn -type d | tr '\n' ':')