SHELL OU

Résolu
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 :-)
Configuration: Windows XP
Firefox 2.0.0.4

6 réponses

  1. Contributeur
    faut-il un espace entre ! et -d ?
    si $1 contient des blancs, mettre des "
    1. ah ben je m'en sors en mettant tout simplement:
      if [ !-d $1 ];then

      mais çà n'explique pas le problème :-)
      1. 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
        1. Contributeur
          Si le script est exécuté sans paramètre, $1 est vide et le test devient if [ $# -lt 1 -o !-d ];then
          1. 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 :-(
            1. 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