Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

MicP a écrit :

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 smile

#!/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 ? lol
- 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 smile
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 wink


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne