Rechercher : dans
Par :

Opérateur unaire attendu

Dernière réponse le 27 mar 2008 à 12:01:28 Anonyme, le 26 mar 2008 à 23:56:51 
 Signaler ce message aux modérateurs

Bonjour, j'ai un petit problème j'ai un message de la console quit me dit : != : opérateur unaire attendu ...

j'aimerais faire un test si un fichier n'existe pas j'écris qqch sinon autre chose voici mon code :

#!/bin/bash

CURRENTDATE=`date | cut -d ' ' -f1`

SEMAINE=$[((`date | cut -d ' ' -f2`-1)/7)+1]

if [ `find -name backup.log` != ' ' ]; then // l'erreur doit être ici

if [ $CURRENTDATE != "vendredi" ];then

echo "backup journalier"

elif [ $SEMAINE != 1 ];then

echo "backup hebdomadaire semaine numero "$SEMAINE

else

echo "backup mensuel semaine numero 1"

fi

else

echo "Création du fichier de sauvegarde"

fi

merci Bonne soirée

Configuration: Linux
Firefox 2.0.0.12

Meilleures réponses pour « opérateur unaire attendu » dans :
Opérations de base Voir Opérations de base Une opération de base est définie par le fait qu'elle ne peut être réalisée par combinaison d'autres opérations. Il existe 5 opérations élémentaires pouvant être classées en deux catégories : Les opérations unaires: elles...
PHP - Les opérateurs Voir Qu'est-ce qu'un opérateur? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, ... On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
Langage C - Les opérateurs Voir Qu'est-ce qu'un opérateur ? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, etc. On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
Opérateurs de téléphonie mobile et les numéros utiles VoirCoordonnées des opérateurs de téléphonie mobile et les numéros utiles Liste non exhaustive SFR Orange Bouygues Telecom Virgin Mobile Tele2 NRJ Mobile M6 Mobile Neuf Mobile Debitel Breizh Mobile Coriolis Fnac Mobile
Message : L'opération demandée nécessite une élévation VoirSi vous avez un de ces messages lorsque vous essayer d'introduire une commande : "L'opération demandée nécessite une élévation" "Accès refusé, vous n'avez pas des privilèges suffisants. Vous devez invoquer cet utilitaire dans un mode...
Java: les opérateurs VoirQu'est-ce qu'un opérateur? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, ... On distingue plusieurs types d'opérateurs : les opérateurs de calcul les...
Javascript: les opérateurs VoirQu'est-ce qu'un opérateur? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, ... On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
Langage C++ - Les opérateurs VoirQu'est-ce qu'un opérateur ? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, etc. On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...

1

jipicy, le 27 mar 2008 à 09:11:56

Salut,

Plusieurs choses déjà...

Pour savoir d'où vient l'erreur dans ton script, il faut le déboguer. Donc rajoute "set -xv" en début de script pour un affichage verbeux, plus facile de déterminer la syntaxe qui foire.

Concernant "opérateur unaire attendu " c'est quand bash attend un opérateur de comparaison sur des nombres (-eq, -ne, -lt, -le, -gt, -ge) et non sur des fichiers ( -z, -n, =, != ).


Ensuite, tu t'embêtes pour rien ;-\

Pour :
CURRENTDATE=`date | cut -d ' ' -f1`
Préférer :
CURRENTDATE=$(date '+%a')

Là, je n'ai pas compris ce que tu voudrais faire !?
SEMAINE=$[((`date | cut -d ' ' -f2`-1)/7)+1]

dans la mesure où "date | cut -d ' ' -f2" retourne l'abréviation du mois en cours (au passage "$(date '+%b')" est préférable), et que par conséquent les opérateurs arithmétiques n'auront pas d'effet ;-((


Pour :
if [ `find -name backup.log` != ' ' ]; then
Préférer :
if [ -e backup.log ]; then ...


Là, c'est faut dans la mesure où "$CURRENTDATE" contient selon la syntaxe (enfin chez moi) "ven" (abréviation du jour de la semaine) et non "vendredi" :
if [ $CURRENTDATE != "vendredi" ];then


Bon, corrige déjà ça, ajoute "set -xv" à ton script, et reviens nous donner des nouvelles ;-))
JP - Éleveur de pingouins -
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.

Répondre à jipicy

2

Anonyme, le 27 mar 2008 à 11:50:19

Bonjour, merci jipicy ça marche super bien mais pourquoi préférer CURRENTDATE=$(date '+%a')

à date | cut -d ' ' -f1 ??

peut être qu'il y a moins d'instructions à executer ...

Merci encore ...

Bonne journée

Répondre à Anonyme

3

 jipicy, le 27 mar 2008 à 12:01:28

peut être qu'il y a moins d'instructions à executer ...
Y'a moins de processus qui sont lancés et puis ça fait parti des options natives de "date", alors pourquoi s'en priver ?

:-)) JP - Éleveur de pingouins -
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.

Répondre à jipicy
Collection CommentÇaMarche.net