Opérateur unaire attendu
Résolu/Fermé
Anonyme
-
26 mars 2008 à 23:56
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 27 mars 2008 à 12:01
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 27 mars 2008 à 12:01
A voir également:
- Bash opérateur unaire attendu
- 0644 quel opérateur ✓ - Forum Mobile
- 0668 quel opérateur ✓ - Forum Opérateurs & Réseaux mobiles
- 0758 quel opérateur - Forum Vos droits sur internet
- 0473 quel opérateur - Forum Loisirs / Divertissements
- 0455 opérateur - Forum Orange
2 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
27 mars 2008 à 09:11
27 mars 2008 à 09:11
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 ;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
27 mars 2008 à 12:01
27 mars 2008 à 12:01
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 ?
:-))
Y'a moins de processus qui sont lancés et puis ça fait parti des options natives de "date", alors pourquoi s'en priver ?
:-))
27 mars 2008 à 11:50
à date | cut -d ' ' -f1 ??
peut être qu'il y a moins d'instructions à executer ...
Merci encore ...
Bonne journée