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 :-)
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
-
Contributeurfaut-il un espace entre ! et -d ?
si $1 contient des blancs, mettre des "
-
ah ben je m'en sors en mettant tout simplement:
if [ !-d $1 ];then
mais çà n'explique pas le problème :-) -
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 -
ContributeurSi le script est exécuté sans paramètre, $1 est vide et le test devient if [ $# -lt 1 -o !-d ];then
-
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 :-( -
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