Gå til innhold
🎄🎅❄️God Jul og Godt Nyttår fra alle oss i Diskusjon.no ×

[Løst] linux, oppgave bash script.


Kj3tll

Anbefalte innlegg

Hei, kan du hjelpe meg? Jeg holder på å repetere til eksamen.. og står fast på denne oppgaven.. Har ikke gjort en slik oppgave før.. :S 
Jeg vet hvordan en parameter virker, men jeg vet ikke hvordan jeg skal gå frem for å legge det inn i et bash script..
 
 
9a) Lag først et program som spør brukeren etter navnet på en katalog. Dersom det ikke
får noen parameter, skal det bruke arbeidskatalogen. Programmet skal gå
gjennom katalogen og telle hvor mange vanlige filer den finner, hvor mange symbolske linker,
og hvor mange kataloger. Disse opplysningene skal programmet skrive til standard output, med
forklaring. Hvis katalogen inneholder 3 filer, 2 symbolske linker, og 5 underkataloger, skal
programmet skrive «3 filer, 2 symbolske linker, 5 kataloger, totalt 10» til standard output.
 
9b) Skriv om programmet slik at det forventer én parameter istedenfor å spør brukeren.
9c) Utvid også programmet til å kunne analysere flere kataloger når bruker gir flere parametre
 

9a)

!/bin/bash

clear
cd

echo -e "Hvilke katalog skal vi telle? \c"
read DIR


NUMFIL=$(ls -l $DIR | grep -c ^-)
NUMSYM=$(ls -l $DIR | grep -c ^l)
NUMDIR=$(ls -l $DIR | grep -c ^d)

echo -e "$NUMFIL filer"
echo -e "$NUMSYM symbolske linker"
echo -e "$NUMDIR kataloger"
((TOTAL = NUMFIL + NUMSYM + NUMDIR))
echo -e "Totalt: $TOTAL "
Endret av Kj3tll
Lenke til kommentar
Videoannonse
Annonse

http://linuxconfig.org/bash-scripting-tutorialPunkt 4 der viser hvordan. 

 

Søk etter "arguments in bash scripting" hvis det fortsatt er uklart. Finnes maange eksempler. 

 

takk, da har jeg følgende og programmet funker fint :)

Men.. er det noe jeg kunne gjort bedre for å gjøre scriptet mindre? eventuelt sette inn for-løkke?

 

#!/bin/bash

 

clear

 

cd

 

echo "Katalogen du teller er: $1"

 

 

 

NUMFIL=$(ls -l $1 | grep -c ^-)

NUMSYM=$(ls -l $1 | grep -c ^l)

NUMDIR=$(ls -l $1 | grep -c ^d)

 

echo -e "$NUMFIL filer"

echo -e "$NUMSYM symbolske linker"

echo -e "$NUMDIR kataloger"

((TOTAL = NUMFIL + NUMSYM + NUMDIR))

echo -e "Totalt: $TOTAL "

 

Lenke til kommentar

Du svarer ikke helt på det oppgaven spørr etter, hvis du fortsatt holder på med 9a. 

 

" Dersom det ikke får noen parameter, skal det bruke arbeidskatalogen."

 

right.. så hvordan gjør man det :'-)* 

jeg kan vell bruke pwd.. kan jeg bruke if.. then.. fi? Hadde nok vært best å bruke for-lokke siden neste oppg. vil at jeg skal bruke for lokke

Lenke til kommentar

Du må nok ha en if også. Ellers ser det ut som du er på rett vei!

 

if [ "$*" == "" ]; then

echo "katalogen du teller er = pwd"

else

echo "Katalogen du teller = $1"

fi

 

.....

 

noe slik :)

 

Takk for hjelpen  :w00t:

Endret av Kj3tll
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...