Puncte:0

Cum să ștergeți o înregistrare dintr-un fișier folosind bash scipt?

drapel pr

Sunt foarte nou în scripting (o săptămână după) și încercam un program care creează o agendă de adrese pentru utilizator, unde pot salva detaliile prietenilor lor. Mai întâi îi cer utilizatorului să-și numească agenda și o stochez în variabila 'abname', apoi iau intrarea necesară de la utilizator și o imprim în fișierul text abname.txt

Problema mea: Cum pot șterge o înregistrare corespunzătoare ID-ului furnizat de utilizator? Iată ce am făcut:

#!/bin/bash


id="1"
în timp ce (adevărat)
do
    echo -e „\nMeniu\n1.Creați o nouă agendă de adrese\n2.Vizualizați tot conținutul agendei de adrese\n3.Inserați o înregistrare nouă\n4.Ștergeți o înregistrare\n5.Modificați o înregistrare\n6.Ieșiți”
    echo -e "\nIntroduceți alegerea dvs.: "
    citeste cap
    echo -e „\nAți selectat opțiunea: $ch”
    caz $ch in
    1)
    echo -e „\nIntroduceți numele agendei de adrese”
    citeste $abname;;  

    2)
    echo -e „\nAgendă: $abname” #numele agendei nu se imprimă aici dintr-un motiv oarecare
    echo -e „\nID\t Nume\t Vârsta\t Adresă”
    cat $abname.txt;; #tipărește tot conținutul fișierului

    3)
    echo -e „\nIdul persoanei este: $id”    
    echo -e "\nIntroduceți numele persoanei: "
    citeste numele
    echo -e "\nIntroduceți vârsta: "
    citeste varsta
    echo -e "\nIntroduceți adresa: "
    citeste adresa
    printf "$id\t $nume\t $vârstă\t $adresă\n" >> $abname.txt
    id=$((id+1));; 

    4)
    echo -e "\nIntroduceți ID-ul persoanei care urmează să fie ștearsă înregistrarea: "
    citeste id
    grep -v „$id” $abname.txt > $abname.txt
    echo „Înregistrarea este ștearsă”
    cat abname.txt;;

    5)
    echo -e "\n Tot";;

    6)ieșire;;
    *) echo -e"\nAlegere nevalidă";;
    esac
Terminat

Ajutor suplimentar: Dacă fișierul abname.txt există deja, vreau să-mi actualizez variabila locală „id” corespunzătoare ID-ului ultimei persoane din fișierul text, am încercat să fac asta, dar nu a funcționat, ce îmi lipsește aici?

dacă [ -e $abname.txt ]
atunci
    sursa <$abname.txt>
    id = $id
fi
waltinator avatar
drapel it
Lipiți întotdeauna scriptul în `https://shellcheck.net`, un verificator de sintaxă sau instalați `shellcheck` local. Utilizarea „shellcheck” este parte a procesului de dezvoltare.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.