2010-03-16 5 views
1

J'ai la ligne ci-dessous dans le script shell Unix. Je veux exclure test.jar dans WEB-INF/lib ajouté au CLASSPATH. Comment puis-je le faire?À propos de Shell Script

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

do 


CLASSPATH=$CLASSPATH:$PWD/$file 

done 
+0

Arav, s'il vous plaît ne pas réutiliser le titre "En ce qui concerne Shell script" pour toutes vos questions. S'il vous plaît utiliser un titre indiquant le problème réel. Vous n'allez pas chez le médecin et dites "aïe!", N'est-ce pas? – Jens

Répondre

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

Je ne l'ai pas essayé.

+1

placez un espace: '[$ file' – ghostdog74

+0

et ajoutez' WEB-INF/lib/'à' test.jar'. J'ai essayé d'éditer mais le formatage de code disparaît. – mouviciel

+0

Terminé. Merci :) – Paul

0
PWD=$(pwd) 

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

Le code entre les accolades ne sont saisies si file n'est pas 'test.jar', tweak pour répondre à vos besoins.

0

Quelque chose comme

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

ne fais pas ça. utiliser l'expansion shell. – ghostdog74

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/:$//') 

Ou

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