Compare commits

...

2 Commits

Author SHA1 Message Date
Aminda Suomalainen d4ae19789d
bash: add employees.bash (another UAS thing) 2024-04-15 12:38:30 +03:00
Aminda Suomalainen d38c727682
add calculator.bash
I am doing an open course and this looks like something I might want to look back later
2024-04-15 12:16:21 +03:00
3 changed files with 83 additions and 0 deletions

2
bash/.gitignore vendored
View File

@ -4,6 +4,8 @@
*.jpeg
# download-forgejo.bash results to these
forgejo-*
# employees.bash
employees.csv
# submodule symlinks
backup-ops2l-vmc.bash
generate-vcard-qr.bash

47
bash/calculator.bash Executable file
View File

@ -0,0 +1,47 @@
#!/usr/bin/env bash
# Ensure we are given three parameters
if [ $# -ne 3 ]; then
echo "Please run this script like: ./$0 <operand1> <operator> <operand2>"
echo "where operator is either +, -, * or /. You may need to escape or"
echo "single quote it."
exit 1
fi
# Store the operands and operator
operand1=$1
operator=$2
operand2=$3
# The main case/switch which was required in the exercise
case $operator in
'+')
result=$((operand1 + operand2))
operatorWord="plus"
;;
'-')
result=$((operand1 - operand2))
operatorWord="minus"
;;
'*')
result=$((operand1 * operand2))
operatorWord="multiplied by"
;;
'/')
if [ "$operand2" -eq 0 ]; then
echo "The laws of mathematics don't allow division by zero."
exit 1
else
result=$((operand1 / operand2))
operatorWord="divided by"
fi
;;
# Let's not forget default case either
*)
echo "Please use operator +, -. * or /"
exit 1
;;
esac
# and finally the output in format wanted by the task
echo "$operand1 $operatorWord $operand2 equals $result"

34
bash/employees.bash Executable file
View File

@ -0,0 +1,34 @@
#!/usr/bin/env bash
# Ensure that the file is empty. -n is specified to avoid \n which would
# become obvious in the cat in the end.
echo -n '' >employees.csv
# Begin at 0 so the incrementing later makes the first employee id 1.
employees=0
# While the employee name isn't 0, take names.
# neovim again complains about backslash dangling and I will probably never
# type read without -r
while true; do
echo "Enter employee name or 0 to stop: "
read -r name
# stops and breaks out of the loop
if [ "$name" = "0" ]; then
break
fi
# begin at employee id 1 by incrementing employees from 0
employee_id=$((employees + 1))
# store employee_id and name to employees.csv
# I think tsv would be easier and better, but this is what the task requested.
echo "$employee_id;$name" >>employees.csv
# increment employees so the next id will be 2
employees=$((employees + 1))
done
# and finally print our document. I stand with tsv being better option.
cat employees.csv