From 33087384aec8dcc93f0dca781770f579d768f6f9 Mon Sep 17 00:00:00 2001 From: koalaman Date: Mon, 10 Jul 2017 23:18:44 -0700 Subject: [PATCH] Updated Template (markdown) --- Template.md | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/Template.md b/Template.md index 8491d0b..0bb55c3 100644 --- a/Template.md +++ b/Template.md @@ -3,18 +3,43 @@ ### Problematic code: ```sh -# Simple example of problematic code +#!/bin/sh +myfunction + +myfunction() { + echo "Hello World" +} ``` ### Correct code: ```sh -# Simple example of above code, only fixed +#!/bin/sh +myfunction() { + echo "Hello World" +} +myfunction ``` + ### Rationale: -(An explanation of why the code is problematic and how the correct code is an improvement) +You are calling a function that you are defining later in the file. The function definition must come first. + +Function definitions are much like variable assignments, and define a name at the point the definition is "executed". This is why they must happen before their first use. + +This is especially apparent when defining functions conditionally: + +``` +case "$(uname -s)" in + Linux) hi() { echo "Hello from Linux"; } ;; + Darwin) hi() { echo "Hello from macOS"; } ;; + *) hi() { echo "Hello from something else"; } ;; +esac + +hi +``` + ### Exceptions: -(Cases where the user may choose to ignore this warning, if any.) \ No newline at end of file +None. \ No newline at end of file