Vraag & Antwoord

Programmeren

[unix shell] script maken in unix

Anoniem
Brainboy
7 antwoorden
  • Hoi,

    Ik ben voor school bezig met het maken van redelijk simpele scripts in unix. Nu ben ik met een script bezig met een case, en een aantal opties. Als laaste kun je dan * verwijzen naar elke waarde en dus een foutmelding maken met echo.

    alleen nu wil ik dat hij als je bijvoorbeeld 3 keuzes hebt (a,b,c) en dan een w invoerd of een 5 dat hij dan een echo geeft met de test dat het een foute invoer is, daarna clear en begint weer opnieuw. Maar ik krijg het niet voorelkaar, wie kan me helpen

    Hier het script zoals hij nu is. Als iemand nog handige site's heeft me unix scritps/tutorials post ze dan ff als je wil

    #script 3
    #keuze menu

    clear
    echo "Maak een keuze uit 1 van de volgende opties a,b of c "
    echo "____________________________"
    echo " "
    echo " a)Delete alle .txt "
    echo " b)Maak een dir aan "
    echo " c)Exit "
    echo " __________________________ "
    read keuze
    case $keuze in
    a)
    rm *.txt;;
    b)
    echo "Geen de naam van de doeldirectory"
    read doeldir
    mkdir $doeldir
    ls -l;;
    c)
    clear
    echo "Bedankt voor het gebruiken van dit script"
    echo " Bey bey "
    sleep 5
    clear
    exit;;
    *)
    echo "Fout!!! "
    echo "U heeft een onbekende keuze ingevoerd"
    sleep 2;;
    esac
  • Dit komt beter tot zijn recht in het "Programmeren" forum: ik geef de topic even een subtiele trap die kant op…
  • Heb je al gezocht?
  • Jah, ik denk dat het met een function moet, maar als ik daar zo naar kijk dan kun je er maar 1 functie maken. En dan zou ik binnen die functie die functie aan moeten roepen, en dat lijkt mij niet kunnen.
  • [quote:f33fb849f6="Brainboy"]Jah, ik denk dat het met een function moet, maar als ik daar zo naar kijk dan kun je er maar 1 functie maken. En dan zou ik binnen die functie die functie aan moeten roepen, en dat lijkt mij niet kunnen.[/quote:f33fb849f6]
    Uhm, dat begrijp ik niet helemaal. Volgens mij kun je functies wel zichzelf laten aanroepen, zoek hier maar eens op recursion. Wordt trouwens niet aangeraden, vanwege traagheid..
    Maar goed, je kan natuurlijk bij de *) keuze eerst de melding geven dat deze niet juist is, en dan het script opnieuw aanroepen:[code:1:f33fb849f6]`basename ${0}`[/code:1:f33fb849f6]Vergeet vooral de backticks (`) niet.
    Het zal vast beter en mooier kunnen, misschien met een while-loop, maar dit werkt.
    [offtopic]
    Het is niet "bey, bey", maar "bye, bye" :wink:
    [/offtopic]
  • Jah, ik wou het nog veranderen maar nog niet gedaan :D . Is een keer wat anders :lol:
  • Ik heb het nu voor elkaar gekregen, met een while loop werkt perfect. Nu ben ik met het volgende script bezig:

    Een script dat alle bestanden van die voor een aangegeven datum zijn gewijzigd, naar een aan te geven map verplaats(bestaat deze niet dient deze aangemaakt te worden). En vervolgens laat zien welke bestanden er in de map zijn gezet.
    Ik heb nu dit stuk code:


    clear
    echo "Dit script verplaats alle bestanden die voor een bepaalde datum gewijzigd zijn "
    echo "gemaakt zijn naar aan te geven map (bestaat deze niet word hij aangemaakt)"
    echo "druk op een toets om door te gaan"
    read
    clear
    echo "Voer de datum in"
    read datum
    echo "Voer de gewenste mapnaam in"
    read doeldir
    if [ -d $doeldir ]; then
    echo "Map bestaat al"
    else
    mkdir $doeldir
    fi
    echo
    [b:6fd4f4cdc1]
    for file in * do
    if
    find "$file" -mtime +$dag
    then
    cp $file $doeldir
    fi
    ls[/b:6fd4f4cdc1]

    Dat eerste gedeelte klopt geloof ik wel, maar nu moet ik een manier hebben zodat hij elke file in de directory (waar het script staat) checkt of de wijzigind datum eerder is als de opgegeven datum

    Wie kan me helpen

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.