Revert a89b80409e1050fcdc4ca8772acfa2e52853cf43...33087384aec8dcc93f0dca781770f579d768f6f9 on Template

koalaman
2017-07-10 23:23:12 -07:00
parent 02885b8974
commit 7e03a9f5ae

@@ -3,43 +3,18 @@
### Problematic code:
```sh
#!/bin/sh
myfunction
myfunction() {
echo "Hello World"
}
# Simple example of problematic code
```
### Correct code:
```sh
#!/bin/sh
myfunction() {
echo "Hello World"
}
myfunction
# Simple example of above code, only fixed
```
### Rationale:
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
```
(An explanation of why the code is problematic and how the correct code is an improvement)
### Exceptions:
None.
(Cases where the user may choose to ignore this warning, if any.)