Problème syntaxe test composé

Fermé
Ttben - Modifié par Ttben le 2/01/2012 à 14:07
 Utilisateur anonyme - 2 janv. 2012 à 14:55
Bonjour à tous !

J'ai un problème de validité de test. Au coeur d'un script bash, j'ai un test qui à pour but de determiner si des adresses ont été donné en chemin absolus ou chemin relatif.
On possède deux adresses à tester, "source" et "cible".

Voila le test :

if [ $(expr index "$source" 1\~)=1 -o $(expr index "$source" 1\/home)=1 -a $(expr index "$cible" 1\~)=1 -o $(expr index "$cible" 1\/home)=1 ] ; then  


# si la source commence par "~" ou par "/home" ET A LA FOIS que la cible commence par "~" ou par "/home", alors on poursuit ; sinon on sort.

Voila les résultats :

cible et source en absolue : ça passe (ok) ;
cible en relatif : ça passe pas (ok) ;
cible ET source en relatif : ça passe pas (ok) ;
source en relatif : ça passe ( => PROBLEME)

Mon test ne devrait pas passer si la source est en relatif. Je crois savoir qu'il y a priorité sur le AND du test, donc je comprend POURQUOI il passe le test ;

je ne connais pas la syntaxe exact à adopter en bash pour faire en sorte de donner la priorité aux "OR" ;
j'ai essayé les parenthèses etc ... sans succès.

Pourriez vous m'aider s'il vous plait ?


Merci d'avance ! =)
A voir également:

1 réponse

Utilisateur anonyme
2 janv. 2012 à 14:55
salut,

Il faut des espaces autour du égal dans les tests.

expr est superflu en bash, il y a les crochets doubles.

Normalement, le tilde est développé, donc je ne crois pas qu'on puisse le tester. Ça dépend de la façon comment est passé l'argument.
0