Opérateur unaire attendu
Résolu
Anonyme
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
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
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
A voir également:
- Bash opérateur unaire attendu
- 06 86 quel opérateur ✓ - Forum Mobile
- 0668 quel opérateur ✓ - Forum Opérateurs & Réseaux mobiles
- Opérateur de réseau mobile - Guide
- 0466 quel opérateur - Forum Mobile
- Connaitre l'opérateur d'un portable inconnu ? ✓ - Forum Mobile
2 réponses
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 ;-))
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 ;-))
à date | cut -d ' ' -f1 ??
peut être qu'il y a moins d'instructions à executer ...
Merci encore ...
Bonne journée