SHELL OU

Résolu
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

je ne comprends pas pourquoi dans un script "backup.logs" :

if [ $# -lt 1 -o !-d $1 ];then

me renvoie :

./backup.logs: line 3: [: too many arguments

C'est le "-o !-d $1" qui pose problème !

Mais je ne comprends pas pourquoi ??

Merci :-)
A voir également:

6 réponses

freto Messages postés 1543 Date d'inscription   Statut Membre Dernière intervention   162
 
Bonjour
Tout d'abord, je ne crois pas que !-d soie une option valide
Exécute ceci dans un shell pour comprendre un peu plus
man test

Si tu ne comprend pas, envoie nous le résultat de la commande
test --help
Mais je ne sais pas si cela marchera
0
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   118
 
Si bien-sur: !-d signifie "n'est pas un répertoire".

C'est quand je l'utilise avec un OU (-o) que çà ne marche po :-(
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
Si le script est exécuté sans paramètre, $1 est vide et le test devient if [ $# -lt 1 -o !-d ];then
0
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   118
 
Oui, mais c'est quand il y a un paramètre que çà met l'erreur;
en fait l'erreur vient de "-o !-d $1" -> too many arguments
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   118
 
ah ben je m'en sors en mettant tout simplement:
if [ !-d $1 ];then

mais çà n'explique pas le problème :-)
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
faut-il un espace entre ! et -d ?
si $1 contient des blancs, mettre des "
0