#1 Le 28/01/2023, à 16:13
- enxra35
création d'une to do list en bash
Bonjour,
J'ai un exercice à rendre dans lequel je dois créer une to do list en bash mais je suis bloquée je ne comprend pas où sont mes erreurs, surement dans les tail et dans les head !
Peut-être que vous arriverez à trouver ? Un peu d'aide ne serez pas de refus.
Voici le lien pour accéder à la consigne et au script, je n'ai pas réussi à les mettre directement dans le message j'ai donc réaliser un fichier wetransfer.
https://wetransfer.com/downloads/50f0e0 … e=sendgrid
Merci d'avance pour votre aide.
Bonne journée !
Hors ligne
#2 Le 28/01/2023, à 16:37
- MicP
Re : création d'une to do list en bash
Bonjour enxra35
Il vaudrait mieux que tu nous transmettes des copiés/collés au format texte,
car depuis une image, c'est très pénible de tout avoir à recopier pour pouvoir y apporter des modifications,
sans compter le nombre d'erreurs de lecture et d'écriture que l'on pourrait faire en tentant de tout recopier.
Cordialement.
Hors ligne
#3 Le 28/01/2023, à 16:51
- enxra35
Re : création d'une to do list en bash
Bonjour enxra35
Il vaudrait mieux que tu nous transmettes des copiés/collés au format texte,
car depuis une image, c'est très pénible de tout avoir à recopier pour pouvoir y apporter des modifications,
sans compter le nombre d'erreurs de lecture et d'écriture que l'on pourrait faire en tentant de tout recopier.Cordialement.
Effectivement c'est vrai que ce serait plus simple je n'y avais pas pensé !
Voici donc une copie de mon script
#!/bin/bash
TACHE="${Home}/.todo_liste"
echo "Entrez une commande"
echo $3
if [ $2 = liste ]
then
nl todo_liste
elif [ $2 = "done" ]
then
var=$(wc -l todo_liste)
var2=$[$(echo $( sed "s/todo_liste//g" <<< ${var}))+1]
echo $[$var2]
if [ 1 = $3 ]
then
tail -n $[$3+1] todo_liste > mktemps
less mktemps > todo_liste
echo "La tache" $3 "est faites!"
echo 1
elif [ $[$var2] = $3 ]
then
head -n $[$3-1] todo_liste > mktemps
less mktemps > todo_liste
echo "La tache" $3 "est faites!"
echo 2
else [ $[$var2+1] != $3 ] && [ 1 != $3 ]
head -n $[$3-1] todo_liste > mktemps
#tail -n $[$3+1] todo_liste >> mktemps
#less mktemps > todo_liste
echo "La tache" $3 "est faite!"
echo 3
fi
else [ $2 = "add" ]
var=$(wc -l todo_liste)
var2=$(echo $( sed "s/todo_liste//g" <<< ${var}))
echo $var2
if [ $[$var2+1] != $3 ] && [ 1 != $3 ]
then
head -n $[$3-1] todo_liste > mktemps
echo ${@:4} >> mktemps
tail -n [$3+1] todo_liste >> mktemps
less mktemps > todo_liste
echo "La tâche" "${@:4}" "a été ajoutée en position" $3
elif [ $[$var2+1] = $3 ]
then
head -n $[$3-1] todo_liste > mktemps
echo ${@:4} >> mktemps
less mktemps > todo_liste
echo "La tâche" "${@:4}" "a été ajoutée en position" $3 "."
else [ 1 = $3 ]
echo ${@:4} > mktemps
less todo_liste >> mktemps
less mktemps > todo_liste
echo "La tâche" "${@:4}" "a été ajoutée en position" $3
fi
fi
Merci d'avance !
Modération : posé les balises code. Merci d'y penser une autre fois.
Dernière modification par Ayral (Le 28/01/2023, à 17:50)
Hors ligne
#4 Le 28/01/2023, à 16:59
- xubu1957
Re : création d'une to do list en bash
Bonjour,
Lecture conseillée > memento des balises code.
_ _ _
(edit=messages regroupés)
_ _ _
Modo : je n'avais pas vu que tu l'avais fait. Fûte.
Dernière modification par xubu1957 (Le 28/01/2023, à 18:27)
Conseils pour les nouveaux demandeurs et pas qu'eux
Important : Pensez à passer vos sujets en [Réso|u] lorsque ceux-ci le sont, au début du titre en cliquant sur Modifier sous le premier message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci. Membre de Linux-Azur
En ligne
#5 Le 28/01/2023, à 18:13
- Watael
Re : création d'une to do list en bash
${Home} :
- les accolades sont inutiles.
- cette variable n'est pas définie.
echo $3 :
- et s'il n'y a pas trois arguments ?
if [ $2 = liste ] :
- et s'il n'y a pas trois arguments ?
- ou que le deuxième est vide ?
var :
- il faut donner aux variables des noms évocateurs de ce qu'elles contiennent.
if [ 1 = $3 ] :
- = est un opérateur lexical : il compare des chaînes, et les nombres comme des chaînes; alors qu'il existe des opérateurs arithmétiques.
less mktemps > todo_liste :
- pourquoi less et pas cat ?
...
tu dois commenter ton script !
ça prouverait que tu as, au préalable, rédigé un algorithme.
et, ça te permettra de comprendre ton script dans quelques mois,
et, à nous, d'en voir les articulations rapidement.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#6 Le 29/01/2023, à 09:25
- fred-cavernedufond
Re : création d'une to do list en bash
Petites questions subsidiaires :
Est-il possible d'exporter les taches To Do via un format de fichier donné (.txt ; .csv etc) pour les synchroniser sur un autre ordinateur et si oui comment ? (c'est un truc qui manque...)
Vous avez 2h
Fred
Fred
Ubuntu 22.04 LTS
Hors ligne
#7 Le 29/01/2023, à 12:09
- jpl-bz
Re : création d'une to do list en bash
bonjour,
quelques bases dans le code de https://taskwarrior.org/ ?
Hors ligne
#8 Le 19/02/2023, à 19:02
- sputnick
Re : création d'une to do list en bash
Avant de demander de l'aide, passer son script sur https://www.shellcheck.net ou bien utiliser la commande ad-hoc.
Il y a des erreurs et c'est en général une bonne pratique de le passer dans cette moulinette avant de demander de l'aide à des humains
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne