2010-03-16 168 views
1

我在UNIX shell脚本中有以下行。我想排除将WEB-INF/lib中的test.jar添加到CLASSPATH中。我该怎么做?关于Shell脚本

for file in WEB-INF/lib/*jar ; 

do 


CLASSPATH=$CLASSPATH:$PWD/$file 

done 
+0

ARAV,请不要重复使用您的所有问题的 “关于shell脚本” 称号。请使用标题说明实际问题。你不去看医生,说“哎呀!”,是吗? – Jens 2012-05-30 20:15:26

回答

2
for file in WEB-INF/lib/*jar; 
do 
if [ $file != "WEB-INF/lib/test.jar" ]; then 
CLASSPATH=$CLASSPATH:$PWD/$file 
fi 
done 

我还没有尝试过。

+1

放了一个空格:'[$ file' – ghostdog74 2010-03-16 05:41:01

+0

并将'WEB-INF/lib /'添加到'test.jar'。我试图编辑但代码格式消失。 – mouviciel 2010-03-16 06:24:24

+0

完成。谢谢:) – Paul 2010-03-16 07:06:15

0
PWD=$(pwd) 

for file in WEB-INF/lib/*jar ; do 
    [ "$file" != "test.jar" ] && { 
     CLASSPATH="${CLASSPATH}:${PWD}/${file}" 
    } 
done 

如果file不是“Test.jar的”,调整以满足您的需求时才进入括号之间的代码。

0

喜欢的东西

#!/bin/sh 
... 
PWD=`pwd` 
for file in `ls $PWD/WEB-INF/lib | grep *.jar | grep -v test.jar` 
    CLASSPATH=$CLASSPATH:$file 
end 
+0

不这样做。使用shell扩展。 – ghostdog74 2010-03-16 05:39:42

1
#!/usr/bin/bash 
shopt -s extglob 
for file in WEB-INF/lib/!(test).jar 
do 
    CLASSPATH="$CLASSPATH:$PWD/$file" 
done 
0
shopt -s extglob 
CLASSPATH=$CLASSPATH:$(ls !(test).jar|sed "[email protected]^@$PWD/@"|tr "\n" ":"|sed 's/:$//') 

或者

CLASSPATH=$CLASSPATH:$(ls !(genre).txt|awk '{$0="'$PWD'/"$0}1' ORS=":")