#!/bin/sh
dernierjourdumoisprecedent =`date --date "today - `date +%d`days" +%Y-%m-%d`
premierjourdumoisencours = `date --date'4 days ago'+%Y%m%d`
sed -i -- 's/201803/'$dernierjourdumoisprecedent'/g' fichier.txt
sed -i -- 's/2018-02-28/'$premierjourdumoisencours'/g' fichier.txt
Bonjour chers tous ! J'ai un problème avec mon script.
Lorsque j'exécute ces commandes simplement :
- $ date --date "today - `date +%d`days" +%Y-%m-%d
- $ date --date'4 days ago'+%Y%m%d
ça passe à merveille
Mais lorsque je l'exécute mon script bien-sûr (fichier.sh) il :
1- Affiche un message de ce genre
./fichier.sh:command substitution: line 3: caractère de fichier(EOF) prématuré lors de la recherche du <<">> correspondant
./fichier.sh:command substitution: line 4: erreur de syntaxe: fin de fichier prématuré
2- Lors du changement de la date dans mon fichier fichier.txt, le changement ne prend pas la valeur de mes variables mais
remplace mes dates qui sont dans mon fichier.txt par les variables elles mêmes.
Merci d'avance de bien vouloir m'aider
Cordialement!
# Une fois formaté…
Posté par MicP . Évalué à 3. Dernière modification le 08 août 2019 à 12:38.
Bonjour
Mais, si on sépare chaque champ par un tiret,
le premier jour du mois en cours serait plutôt:
[^] # Re: Une fois formaté…
Posté par MicP . Évalué à 3. Dernière modification le 08 août 2019 à 12:45.
Tu peux aussi écrire les lignes
sed
en utilisant des double guillemets :
[^] # Re: Une fois formaté…
Posté par zanetti . Évalué à 1.
Bonjour merci pour votre aide et je viens d'essayer votre modification mais les variables ne changent toujours pas, elles se mettent à la place de leur valeur or moi c'est leur valeur que je veux.
[^] # Re: Une fois formaté…
Posté par NeoX . Évalué à 3.
Essai en fermant les guillemets avant la variable et en les reluctant après
# .
Posté par popcorn . Évalué à 2.
La solution de MicP fonctionne pourtant. Utilises-tu bien des guillemets ?
Voici ce qu'il faut corriger dans ton script original, au cas ou tu serais interesse :
- echapper les accents inverses embarques de la premiere ligne
- enlever les espaces entres les signes '=' des deux premieres lignes.
- ajouter un espace avant le signe '+' de la deuxieme ligne.
# 2 remarques
Posté par fearan . Évalué à 3.
1) ne pas utiliser les `, c'est moins lisible et peu pratique lors de leur usage en interne; leur préférer les $( ), plus lisible et facile à imbriquer ;)
2) pas d'espace entre la variable et =
ta première ligne donne 2 erreurs
puis une fois celle-ci corrigée (pb espace)
celle ci se corrige aisaiment en remplaçant les
,
par $(,); ou en protégeant les ` internes avec des \, mais c'est moche et continue de donner le mauvais exemple :Penfin, tu utilise 2 sed séparés pour modifier le même fichier (2 appels, 2 fork, 2 ouvertures…) c'est pas top
tu peux exécuter les deux commandes en les séparant par un ;
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
# Remerciement pour l'aide sur le script de changement de date
Posté par zanetti . Évalué à 2.
Bonjour cher tous ! Je voudrais vous remercier pour votre aide. Mon script marche à merveille. Thanks
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.