Enkel Bash-scriptning
Kategoriregler
Läs följande innan du postar: http://ubuntu-se.org/phpBB3/viewtopic.php?f=208&t=44692
Du får hjälp att komma igång med Ubuntu genom att välja en personlig fadder här: http://ubuntu-se.org/phpBB3/viewtopic.php?f=110&t=8767
Läs följande innan du postar: http://ubuntu-se.org/phpBB3/viewtopic.php?f=208&t=44692
Du får hjälp att komma igång med Ubuntu genom att välja en personlig fadder här: http://ubuntu-se.org/phpBB3/viewtopic.php?f=110&t=8767
Enkel Bash-scriptning
Hej
Jag har fått i uppgift att skapa ett enkelt bash-script som ska visa en textsträng beroende på vad klockan är.
Det ska se ut enligt följande:
Om klockan är mellan 05.00 – 10.59 ska meddelandet ”morning.” skrivas ut.
Om klockan är mellan 11.00-12.59 ska meddalandet "lunch" skrivas ut.
Om klockan är mellan 13.00 - 16.59 ska meddelandet "afternoon" skrivas ut.
Om klockan är mellan 17.00 - 20.59 ska meddelandet "evening" skrivas ut.
Om klockan är mellan 21.00 - 04.59 ska meddelandet "night" skrivas ut.
Jag är med på att jag ska använda kommandot date tillsammans med en if-sats. Men hur ska jag formatera outputen så att den kan användas till scriptet? Är ny på det här.
Tack på förhand!
Jag har fått i uppgift att skapa ett enkelt bash-script som ska visa en textsträng beroende på vad klockan är.
Det ska se ut enligt följande:
Om klockan är mellan 05.00 – 10.59 ska meddelandet ”morning.” skrivas ut.
Om klockan är mellan 11.00-12.59 ska meddalandet "lunch" skrivas ut.
Om klockan är mellan 13.00 - 16.59 ska meddelandet "afternoon" skrivas ut.
Om klockan är mellan 17.00 - 20.59 ska meddelandet "evening" skrivas ut.
Om klockan är mellan 21.00 - 04.59 ska meddelandet "night" skrivas ut.
Jag är med på att jag ska använda kommandot date tillsammans med en if-sats. Men hur ska jag formatera outputen så att den kan användas till scriptet? Är ny på det här.
Tack på förhand!
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Enkel Bash-scriptning
Det fungerar förstås, men case är nog lite smidigare än if i det här fallet.traub skrev:Jag är med på att jag ska använda kommandot date tillsammans med en if-sats.
Använd formatet +%H för att få fram timmen.traub skrev:Men hur ska jag formatera outputen så att den kan användas till scriptet?
Re: Enkel Bash-scriptning
Tack för svar!
Skulle vilja ha lite mer tips ang. användning av case och hur jag jämför talen med varandra.
Tack på förhand.
Skulle vilja ha lite mer tips ang. användning av case och hur jag jämför talen med varandra.
Tack på förhand.
Re: Enkel Bash-scriptning
Tack för svar!
Skulle vilja ha lite mer tips ang. användning av case och hur jag jämför talen med varandra.
Tack på förhand.
Skulle vilja ha lite mer tips ang. användning av case och hur jag jämför talen med varandra.
Tack på förhand.
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Enkel Bash-scriptning
Här har du ett exempel:traub skrev:Skulle vilja ha lite mer tips ang. användning av case och hur jag jämför talen med varandra.
Kod: Markera allt
#!/bin/bash
case $((RANDOM%10)) in
0|1) echo binär ;;
4|9) echo kvadrat ;;
2|3|5|7) echo primtal ;;
*) echo annat ;;
esac
Re: Enkel Bash-scriptning
Jag vill rekommendera den här guiden: http://tldp.org/LDP/Bash-Beginners-Guide/html/
för en nybliven skriptare, samt GNUs manualsidor som du får fram genom att köra
exempelvis
i detta fallet, för att få veta mer om bash och dess inbyggda funktioner.
för en nybliven skriptare, samt GNUs manualsidor som du får fram genom att köra
Kod: Markera allt
man kommando
Kod: Markera allt
man bash
Re: Enkel Bash-scriptning
Hej igen!
Lyckades utan några större bekymmer lösa uppgiften med hjälp utav case.
Nu har jag en ny som jag skulle vilja att ni kikade på...
Uppgiften är att läsa in en enkel katalogstruktur från en fil. Strukturen ska se ut enligt bifogad bild.
Vad har jag missat?
Lyckades utan några större bekymmer lösa uppgiften med hjälp utav case.
Nu har jag en ny som jag skulle vilja att ni kikade på...
Uppgiften är att läsa in en enkel katalogstruktur från en fil. Strukturen ska se ut enligt bifogad bild.
Kod: Markera allt
#!/bin/bash
pwd=$(pwd)
#Läs in kolumner från "struktur".
for struktur in ${column[*]}
do
if [ -e $struktur ]
then
cd $struktur
else
mkdir $struktur
cd $struktur
fi
done
cd $pwd
- Bilagor
-
- Untitled1.png (8.14 KiB) Visad 778 gånger
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Enkel Bash-scriptning
Varför flyttar inte ut den gemansamma biten utanför if-satsen istället för att ha samma kod på två ställen för de olika fallen? Och så en annan sak... Vad tror du händer om $struktur existerar, men inte är en katalog, utan istället är en helt vanlig fil?traub skrev:Kod: Markera allt
if [ -e $struktur ] then cd $struktur else mkdir $struktur cd $struktur fi
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Enkel Bash-scriptning
Jag jag kan ju även tipsa om att det finns fler och ibland smidigare sätt att göra detta på. Du har till att börja med cd - som hoppar tillbaka till förra stället. Och så finns pushd och popd, vilket kan vara vettigt ifall det behövs hopp tillbaka i flera steg. Ytterligare en variant är att använda ett subskal. Då hoppar den automatiskt tillbaka när subskalet avslutas...traub skrev:Kod: Markera allt
#!/bin/bash pwd=$(pwd) ... cd $struktur ... cd $pwd
Kod: Markera allt
# kod
(
cd ny_katalog
# mer kod
)
# här är vi tillbaka i samma katalog som innan parantesen