Skip to content
Extraits de code Groupes Projets
Valider f636851a rédigé par Pierre-Yves Barriat's avatar Pierre-Yves Barriat
Parcourir les fichiers

Modif PY exercises

parent bb4acc51
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -5,7 +5,7 @@ author: P.Y. Barriat
description: Introduction to Bash Scripting
backgroundImage: url('assets/back.png')
_backgroundImage: url('assets/garde.png')
footer: 17/10/2023 | Introduction to Bash Scripting
footer: 10/10/2024 | Introduction to Bash Scripting
_footer: ""
paginate: true
_paginate: false
......@@ -254,25 +254,14 @@ Consider `string=abcABC123ABCabc` and `filename=myfile.txt`
* `${string:7:3}` is `23A`
* `${string:(-4)}` or `${string: -4}` is `Cabc`
* substring removal from front :
* `${string#a*C}` is `123ABCabc`
* `${filename##myfile}` is `.txt`
<!-- WARNING -->
---
* substring removal from back :
* `${string%b*c}` is `abcABC123ABCa`
* `${filename%%.txt}` is `myfile`
## Variable expansion
<!--## Variable expansion
* `${variable-default}` :
if `variable` is unset or null, the expansion of `default` is substituted
* `${variable+default}` :
if `variable` is unset or null, nothing is substituted, otherwise the expansion of `default` is substituted
<!-- WARNING -->
if `variable` is unset or null, the expansion of `default` is substituted-->
---
......@@ -454,12 +443,16 @@ esac
1. In your `bash_exercises` folder create a new bash file called `exercise_2.sh` and make it executable
2. Ask the user for two numbers smaller or equal to 100, put them in variables `NUMBER1` and `NUMBER2`
> `read NUMBER1`
> `read NUMBER2`
3. Do the following only if the numbers are smaller than 100
4. Otherwise, check if both numbers are even, and tell the user
5. If the user's numbers ar too big, tell them
> `echo 'message'`
> ```bash
> #!/bin/bash
> read NUMBER1
> read NUMBER2
>```
3. Check if the numbers are smaller than 100
- If yes, check if both numbers are even and tell the user
- If not, tell the user with `echo 'my message'`
---
......@@ -552,6 +545,8 @@ Basic loop structures in Bash scripting :
### Examples
```bash
#!/bin/bash
# Basic while loop
counter=0
while [ $counter -lt 3 ]; do
......@@ -611,13 +606,12 @@ done
# Hands-on exercise
Speed game:
1. Use the following website to get a list of random words: https://randomwordgenerator.com and put them together in a variable
2. Register the start time with `date +%s` and put it in a variable `TSTART`
3. Loop over the words and ask the user to give the number of letters. Echo the answers.
4. Register the end time in `TEND`
5. Display the total run time and the score.
1. In your `bash_exercises` folder create a new bash file called `exercise_3.sh` and make it executable
2. Use the following website to get a list of 10 random words: https://randomwordgenerator.com and put them together in an array
3. Register the start time with `date +%S` and put it in a variable `tstart`
4. Loop over the words and ask the user to give the number of letters. Echo the answers.
5. Register the end time in `tend`
6. Display the total run time and the total number of letters.
---
......@@ -808,8 +802,10 @@ _files="$@"
# Hands-on exercise
<!-- Repartir de l'exercise précédent. Stocker les résultatst dans un fichier au lieu de stdin.
Puis; lire ce fichier pour compter le score. -->
1. In your `bash_exercises` folder, copy `exercise_3.sh` to `exercise_4.sh`
2. In this new file, loop over the words and write the number of letters of each word in a new file called `output.txt`
3. Now loop over the created file `output.txt` to get the total number of letters
4. Display the total run time and the total number of letters
---
......@@ -827,11 +823,10 @@ hello_world () {
}
hello_world
```
Functions must be declared **before** they are used
> defining a function doesn’t execute it
Functions must be declared **before** they are used
---
## Variables Scope
......@@ -919,7 +914,7 @@ print_something Mars
# Hands-on exercise
1. Write a script called `exercise_4.sh` expecting **2 arguments**. If not exactly two arguments are provided, exit with an error and show a "usage" message to the user.
1. Write a script called `exercise_5.sh` expecting **2 arguments**. If not exactly two arguments are provided, exit with an error and show a "usage" message to the user.
2. Write a function taking a **folder path** and an **extension** as arguments and giving the list of matching files to the user
<!-- 3. Imagine you are running jobs taking data from two folders, each with a dedicated extension. Use the two arguments of the script as the name of the two folders and **get the two lists of files**.
4. Since your work needs to read these files, **check that all files can be read**. If some files cannot be read, display their name to the user-->
......@@ -1109,6 +1104,4 @@ echo "done"
```bash
time ./manager_seq.sh
time ./manager_par.sh
```
---
\ No newline at end of file
```
\ No newline at end of file
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter