Je ne sais pas comment faire. J'ai besoin de faire une option de menu où vous pouvez rechercher un contact par son pseudonyme, puis modifier ses données. Par exemple :Scripting Shell: Liste de contacts
Nom - Nick - Téléphone - Courrier
John - Johnny - 123456789 - [email protected]
Ce que je jusqu'à il est maintenant:
add(){
read -e -p "Name: " name
read -e -p "Nick: " nick
read -e -p "Phone: " phone
read -e -p "Email: " mail
echo $name "-" $nick "-" $phone "-" $mail >> list
}
mod(){
read nick
grep $nick list
#Don't know how to continue this... :-/
}
Cette fonction peut également être utilisée pour rechercher des informations utilisateur. Donc je pense que je peux passer le résultat à un temp, changer là et après cela pour passer l'info au fichier original ... mais je ne sais pas si ce sera la meilleure option et si je sais comment faire.
Aussi j'ai besoin de faire plus d'options: supprimer le contact, ajouter un contact et une fonction qui devrait regarder s'il y a des lignes vides (les supprimer), contacts qui ont seulement le NICK (retirer et enregistrer un reg).
Utiliser tableau de bord comme séparateur est pas robuste, les gens ont des traits d'union dans les noms, les numéros de téléphone et adresses e-mail Je suggérerais soit délimité par des tabulations ou CSV (avec toutes ses conventions idiotes, il est raisonnablement standard et bien supporté par les outils). – tripleee
Pour lire les lignes d'un fichier piped, echo $ * | while read l; faire ...; fait »; alternativement, il y a tout un sleuth de commandes Unix à cet effet (créé dans les premiers jours - une des raisons pour lesquelles Unix était populaire, les gens aimaient ses capacités de traitement de texte): 'cut',' ex', 'fmt',' fold ',' join', 'awk',' paste', 'sed',' sort', 'tr',' uniq', 'vi',' xargs'. Les largeurs de colonnes fixes ne sont-elles pas l'approche native d'un problème CRUD record plutôt que CSV? Y a-t-il une raison particulière pour laquelle vous devez utiliser un script shell, un module perl le résoudrait en un tournemain. – user5321531