quick break and continue example

This commit is contained in:
waldek 2022-07-14 15:49:06 +02:00
parent b9badbde9d
commit 4a7606507d
1 changed files with 68 additions and 15 deletions

View File

@ -1139,7 +1139,74 @@ waldek@debian:~$
## `break` and `continue`
TODO
When we consider the `secret.sh` password checker we made, we have a problem.
The program always exits, either with a success code `0` or with an error of `1`.
In order to *break* a loop conditionally we need a new keyword, `break`.
I rewrote the same script but with a more logical flow of operation.
```bash
#!/bin/bash
secret="test123"
tries=3
while true; do
read -s -p "your password please: " password
if [[ $password == $secret ]]; then
echo "access granted!"
break
else
(( tries-- ))
if [[ $tries -eq 0 ]]; then
echo "access denied!"
exit 1
fi
echo "wrong password, you have $tries left..."
fi
done
echo "we're in!"
echo "the code keeps on flowing..."
```
`continue` is very similar to `break`.
It *breaks* the current iteration and **continues** to the next cycle.
Consider the example below.
```bash
#!/bin/bash
counter=0
value=0
while [[ $counter -lt 100 ]]; do
if (( $counter % 2 )); then
echo "$counter is even"
random=$(( $RANDOM % 20 ))
echo "adding $random to the counter"
counter=$(( $random + $counter ))
echo "and I'll loop again"
continue
fi
echo "incrementing $counter by just one..."
(( counter++ ))
done
```
# Functions - Reuse code to make life easier.
## defining a function
## function arguments
## global vs local variable
## return values
## the `command` builtin
[Ryan's tutorials](https://ryanstutorials.net/bash-scripting-tutorial/bash-functions.php)
# Coding challenge - pipe or argument plus action!
@ -1247,20 +1314,6 @@ done
</details>
# Functions - Reuse code to make life easier.
## defining a function
## function arguments
## global vs local variable
## return values
## the `command` builtin
[Ryan's tutorials](https://ryanstutorials.net/bash-scripting-tutorial/bash-functions.php)
# Coding challenge - Student reports
With the [following](../assets/scores.csv) file write me a program that prints: