Fixed formating and layouts of all the reports

This commit is contained in:
2013-12-30 20:39:11 +01:00
parent 0d73f45df7
commit add6527bab
8 changed files with 150 additions and 41 deletions

View File

@@ -1,7 +1,10 @@
# Laborationsrapport 4 #
Jack-Benny Persson <br>
LX13
## Syfte ##
Förstå hur man använder kommandot let för att utföra grundläggande räkning. Även att behärska parameter substitution (dollarsign substitution).
Förstå hur man använder kommandot let för att utföra grundläggande räkning.
Även att behärska parameter substitution (dollarsign substitution).
## Tillvägagångssätt ##
@@ -12,7 +15,9 @@ echo $Summa
12
```
Ovanståede kod är enkel och fungerar bra, det som blir problem är precis som texten säger, när man delar något som inte går jämnt ut. Man får då resten som modulus enligt nedan
Ovanståede kod är enkel och fungerar bra, det som blir problem är precis som
texten säger, när man delar något som inte går jämnt ut. Man får då resten som
modulus enligt nedan
```bash
let Summa="10/3"
echo $Summa # Svaret blir 3, eftersom 3*3=9
@@ -24,11 +29,14 @@ let Summa="10%3"
echo $Summa # Svaret blir 1, efter 3*3=9+1=10, alltså resten är 1.
```
Istället för `let` kan man instället skriva `Summa=$((4+4)); echo $Summa` och vi får svaret 8.
Istället för `let` kan man instället skriva `Summa=$((4+4)); echo $Summa` och
vi får svaret 8.
### Parameter Substitution / Expansion ##
Skillnaden mellan `echo ${Param:=Hej}` och `echo ${Param=Hej}` är att första exemplet,
d.v.s. där vi har kolon (:) så kommer "Hej" att skrivas om $Param är tom och inte satt (unset). Om vi skriver utan kolon å andra sidan så testas bara om $Param är tom.
Skillnaden mellan `echo ${Param:=Hej}` och `echo ${Param=Hej}` är att första
exemplet, d.v.s. där vi har kolon (:) så kommer "Hej" att skrivas om $Param är
tom och inte satt (unset). Om vi skriver utan kolon å andra sidan så testas
bara om $Param är tom.
```bash
Me=""
@@ -36,7 +44,8 @@ echo ${Me=Yay} # Skriver inte ut något
echo ${Me:=Yay} # Skriver ut Yay samt säter $Mee till Yay
```
Det finns även andra operatorer förutom lika med (=). Nedan listas dessa med exempel
Det finns även andra operatorer förutom lika med (=). Nedan listas dessa med
exempel
```bash
Me=""
echo ${Me-Yay} # Skriver inte ut något (eftersom Me är satt)
@@ -47,25 +56,35 @@ echo ${Test10:+Då} # Skriver ut Då, men lämnar $Test10 till "Hej"
unset Test10
echo ${Test10:+Då} # Skriver inte något då $Test10 är unset
echo ${Test20:?Missing} # Skriver ut "Missing" till STDERR eftersom $Test20 är unset
echo ${Test20:?Missing} # Skriver ut "Missing" till STDERR eftersom $Test20
är unset
```
### Övningar ###
* [Övning 1](https://github.com/jackbenny/scripts_grundkurs/blob/master/Labb4/ovning1.sh)
* [Övning 2](https://github.com/jackbenny/scripts_grundkurs/blob/master/Labb4/ovning2.sh)
* [Övning 3, script 1](https://github.com/jackbenny/scripts_grundkurs/blob/master/Labb4/ovning3_script1.sh)
* [Övning 3, script 2](https://github.com/jackbenny/scripts_grundkurs/blob/master/Labb4/ovning3_script2.sh)
## Reflektion ##
En lösning på problemet med att Bash bara räknar med int är att istället använda `bc` (Bench Calculator) istället för `let` i Bash.
Observera dock här att `bc` inte heller räknar mer än int (heltal) som standard. T.ex. så blir `echo "10/3" | bc` också 3. Tricket här att är att ställa in __scale__ variablen till `bc`. T.ex. så blir `echo "scale=3;10/3" | bc` helt korrekt 3.33.
En lösning på problemet med att Bash bara räknar med int är att istället
använda `bc` (Bench Calculator) istället för `let` i Bash.
Observera dock här att `bc` inte heller räknar mer än int (heltal) som standard.
T.ex. så blir `echo "10/3" | bc` också 3. Tricket här att är att ställa
in __scale__ variablen till `bc`. T.ex. så blir `echo "scale=3;10/3" | bc`
helt korrekt 3.33.
En annan cool sak som stod i laborationen var det om Variable Substution. Att kunna tilldela en variabel ett specifikt värde om den är tom, t.ex `Variabel=""; echo ${Variabel:=test}`.
Att kunna byta ut strängar i variabler är också en häftig funktion och väldigt "sed lik". T.ex. nedanstående kodstycke
En annan cool sak som stod i laborationen var det om Variable Substution.
Att kunna tilldela en variabel ett specifikt värde om den är tom,
t.ex `Variabel=""; echo ${Variabel:=test}`.
Att kunna byta ut strängar i variabler är också en häftig funktion och
väldigt "sed lik". T.ex. nedanstående kodstycke
```bash
Var="Hej alla glada"
Var=${Var/glada/sura}
echo $Var # "Hej alla sura" skrivs ut
```
Att kunna söka efter variabler är också trevligt, typ `echo ${!U}` som kommer att matcha t.ex. UID och USER.
Att kunna söka efter variabler är också trevligt, typ `echo ${!U}` som kommer
att matcha t.ex. UID och USER.