Whenever we have statements that are printed on the screen within the function, we can see their result. However, lots of times we will want the function to populate a variable within the script and not display anything. In this case, we use return in the function. This is especially important when we are gaining input from users. We may prefer the case to translate the input to a known case to make the condition testing easier. Embedding the code in a function allows it to be used many times within a script.
The following code shows how we can achieve this by creating theĀ to_lower function:
to_lower () { input="$1" output=$( echo $input | tr [A-Z] [a-z]) return $output }
Stepping through the code, we can begin to understand the operation of this function:
- input="$1": This is more for ease than anything else; we assign the first input parameter to a named variable input.
- output=$( echo $input | tr [A-Z] [a-z]): This is the main engine of the function, where the translation from uppercase to lowercase occurs. We pipe the input to the tr command to convert uppercase to lowercase.
- return $output: This is how we create the return value.
One use of this function will be within a script that reads the user's input and simplifies the test to see whether they choose Q or q. This can be seen in the following extract of code:
to_lower () { input="$1" output=$( echo $input | tr [A-Z] [a-z]) return $output } while true do read -p "Enter c to continue or q to exit: " $REPLY=$(to_lower "$REPLY") if [ $REPLY = "q" ] ; then break fi done echo "Finished"