#!/bin/bash
#
###########################################################
# Copyright (c) 2022 by Manfred Rosenboom                 #
#                                                         #
# Dieses Werk ist lizenziert unter einer                  #
# Creative Commons Namensnennung 4.0 International Lizenz #
# CC-BY 4.0: https://creativecommons.org/licenses/by/4.0/ #
###########################################################
#
FULL_SCRIPT_NAME=$0
#
echo "Beispiele: Bash Funktionen"
echo ""
echo "Bash Version : ${BASH_VERSION}"
echo "LANG         : ${LANG}"
echo -n "Kernel       : "
uname -s -r -m
echo ""
echo ""
#
###############################################################################
#
echo "Funktionsdeklaration und Aufruf"
echo "function hallo1() {"
echo "    echo \"Hallo1!\""
echo "}"
echo "hallo1"
echo "---"
function hallo1() {
    echo "Hallo1!"
}
hallo1
echo ""
echo "hallo2() {"
echo "    echo \"Hallo2!\""
echo "}"
echo "hallo2"
echo "---"
hallo2() {
    echo "Hallo2!"
}
hallo2
echo ""
#
###############################################################################
#
echo "Übergabeparameter"
echo "function zeigeUebergabeParameter() {"
echi "    echo \"Anzahl Parameter : \$#\""
echo "    echo \"Parameter 1 : \$1\""
echo "    echo \"Parameter 2 : \$2\""
echo "    echo \"Alle Parameter:\""
echo "    echo \"\$@\""
echo "}"
echo "zeigeUebergabeParameter p1 p2 p3 p4"
echo "---"
function zeigeUebergabeParameter() {
    echo "Anzahl Parameter : $#"
    echo "Parameter 1      : $1"
    echo "Parameter 2      : $2"
    echo "Alle Parameter:"
    echo "$@"
}
zeigeUebergabeParameter p1 p2 p3 p4
echo ""
#
###############################################################################
#
echo "Globale/Lokale Variablen"
echo "var1=1"
echo "var2=2"
echo "#"
echo "use_of_variables() {"
echo "    local var1=10"
echo "    var2=7"
echo "    var3=42"
echo "    local var4=2525"
echo "    echo \"in der Funktion: var1: \$var1, var2: \$var2, var3: \$var3\", var4: \$var4\""
echo "}"
echo "#"
echo "echo \"Vor dem Aufruf der Funktion: var1: \$var1, var2: \$var2, var3: \$var3\", var4: \$var4\""
echo "use_of_variables"
echo "echo \"Nach dem Aufruf der Funktion: var1: \$var1, var2: \$var2, var3: \$var3\", var4: \$var4\""
echo "---"
var1=1
var2=2
#
use_of_variables() {
    local var1=10
    var2=7
    var3=42
    local var4=2525
    echo "In der Funktion: var1: $var1, var2: $var2, var3: $var3, var4: $var4"
}
#
echo "Vor dem Aufruf der Funktion: var1: $var1, var2: $var2, var3: $var3, var4: $var4"
use_of_variables
echo "Nach dem Aufruf der Funktion: var1: $var1, var2: $var2, var3: $var3, var4: $var4"
echo ""
#
###############################################################################
#
echo "Rückgabewert"
echo "FULL_SCRIPT_NAME=\$0"
echo "function file_size() {"
echo "    stat --format \"%n: %s Bytes\" \$1"
echo "}"
echo "file_size \${FULL_SCRIPT_NAME}"
echo "echo \"exit code : \$?\""
echo "echo \"\""
echo "file_size diese_datei_gibt_es_nicht"
echo "echo \"exit code : \$?\""
echo "#"
echo "function file_size_return() {"
echo "    return 42"
echo "    stat --format \"%n: %s Bytes\" \$1"
echo "}"
echo "file_size_return \${FULL_SCRIPT_NAME}"
echo "echo \"exit code : \$?\""
echo "---"
function file_size() {
    stat --format "%n: %s Bytes" $1
}
file_size ${FULL_SCRIPT_NAME}
echo "exit code : $?"
echo ""
file_size diese_datei_gibt_es_nicht
echo "exit code : $?"
echo ""
#
echo "function file_size_return() {"
echo "    return 42"
echo "    stat --format \"%n: %s Bytes\" \$1"
echo "}"
echo "file_size_return \${FULL_SCRIPT_NAME}"
echo "echo \"exit code : \$?\""
echo "---"
function file_size_return() {
    return 42
    stat --format "%n: %s Bytes" $1
}
file_size_return ${FULL_SCRIPT_NAME}
echo "exit code : $?"
echo ""
#
###############################################################################
#
exit 0