【发布时间】:2016-03-06 16:12:09
【问题描述】:
我一直在尝试为我的项目更改旧的 Shell 脚本。我已经进行了一些研究,但是 : 在 shell 脚本中的用法对我来说还不是很清楚。
#!/bin/bash
cd /home/dir1/dir2/dir3
FILES=../lib/*
CLASSPATH=.:../conf/
for f in $FILES
do
CLASSPATH=$CLASSPATH:$f
done
echo $CLASSPATH
他们在这里试图做什么,是在两个目录中寻找相同命名的文件并将它们分配给CLASSPATH?
【问题讨论】:
-
这是一个字面量
:,即CLASSPATH中的路径用:分隔 -
当然,最好使用
CLASSPATH=.:/home/dir1/dir2/conf$(printf ":%s" /home/dir1/dir2/lib/*) -
printf或者这里没有数组会更加更安全。也就是说,使用数组也可以使用$(IFS=:; echo "${arr[*]}")。