|
|
@ -1,17 +1,45 @@
|
|
|
|
Coding style used for my bash projects (v2 Sep 2015)
|
|
|
|
Coding style used for my bash projects (v2 Sep 2015)
|
|
|
|
|
|
|
|
|
|
|
|
1. Indentation
|
|
|
|
++++ Header
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Always use the following header
|
|
|
|
|
|
|
|
----BEGIN HEADER
|
|
|
|
|
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROGRAM="program-name" # Long description
|
|
|
|
|
|
|
|
AUTHOR="(L) 20XX-20YY by Orsiris \"Ozy\" de Jong"
|
|
|
|
|
|
|
|
CONTACT="http://www.example.com me@example.com"
|
|
|
|
|
|
|
|
PROGRAM_BUILD=YYYYMMDDVV
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Optional instructions
|
|
|
|
|
|
|
|
----END HEADER
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Using bind style versionning:
|
|
|
|
|
|
|
|
YYYYMMDDVV (Year, Month, Day, Revision): Example: 2015012402 = 2nd revision of 24 Jan 2015
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
++++ Indentation
|
|
|
|
|
|
|
|
|
|
|
|
Using tabs
|
|
|
|
Using tabs
|
|
|
|
Transform old shell scripts using unexpand command
|
|
|
|
Transform old shell scripts using unexpand command
|
|
|
|
|
|
|
|
|
|
|
|
2. Comments
|
|
|
|
++++ Comments
|
|
|
|
|
|
|
|
|
|
|
|
# Some comment
|
|
|
|
# Some comment
|
|
|
|
## Some important comment for the next function
|
|
|
|
## Some important comment for the next function
|
|
|
|
################################################# Some separation
|
|
|
|
################################################# Some separation
|
|
|
|
|
|
|
|
|
|
|
|
3. Functions
|
|
|
|
++++ Todo comments
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Whenever there is some idea to postpone, use #TODO: (exact match for searches)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
++++ Variables
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
All local variables are lowercase, separated by _ (ex: low_wait)
|
|
|
|
|
|
|
|
All global variables full upercase, separated by _ (ex: EXEC_TIME)
|
|
|
|
|
|
|
|
All instance variables (verbose, silent, etc) have prefix _ and are full upercase, separated by _ (ex: _VERBOSE)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
++++ Functions
|
|
|
|
|
|
|
|
|
|
|
|
Every word in a function begins with an uppercase (ex: SomeFunctionDoesThings)
|
|
|
|
Every word in a function begins with an uppercase (ex: SomeFunctionDoesThings)
|
|
|
|
|
|
|
|
|
|
|
@ -34,11 +62,11 @@ function thirdthing {
|
|
|
|
return $?
|
|
|
|
return $?
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
3.1 Sub functions
|
|
|
|
++++ Sub functions
|
|
|
|
|
|
|
|
|
|
|
|
When a function is a subroutine of another function, it is called _SomethingAsSubFunction
|
|
|
|
When a function is a subroutine of another function, it is called _SomethingAsSubFunction
|
|
|
|
|
|
|
|
|
|
|
|
4. If statements
|
|
|
|
++++ If statements
|
|
|
|
|
|
|
|
|
|
|
|
If statements will be fully written (word "if" must be used). then is written on the same line.
|
|
|
|
If statements will be fully written (word "if" must be used). then is written on the same line.
|
|
|
|
(Use sed ':a;N;$!ba;s/]\n\t*then/]; then/g' to convert files to this format... Replace "],new line, zero or more tabs, then" by "; then")
|
|
|
|
(Use sed ':a;N;$!ba;s/]\n\t*then/]; then/g' to convert files to this format... Replace "],new line, zero or more tabs, then" by "; then")
|
|
|
@ -48,7 +76,7 @@ else
|
|
|
|
other stuff
|
|
|
|
other stuff
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
5. Logging
|
|
|
|
++++ Logging
|
|
|
|
|
|
|
|
|
|
|
|
A logging function is available with the following levels of logging:
|
|
|
|
A logging function is available with the following levels of logging:
|
|
|
|
|
|
|
|
|
|
|
@ -58,17 +86,9 @@ A logging function is available with the following levels of logging:
|
|
|
|
- ERROR: Program produced an error but continues execution
|
|
|
|
- ERROR: Program produced an error but continues execution
|
|
|
|
- CRITICAL: Program execution is halted
|
|
|
|
- CRITICAL: Program execution is halted
|
|
|
|
|
|
|
|
|
|
|
|
6. Eval
|
|
|
|
++++ Eval
|
|
|
|
|
|
|
|
|
|
|
|
The eval command should always contain 2>1&.
|
|
|
|
The eval command should always contain 2>1&.
|
|
|
|
There's a special case where this is needed:
|
|
|
|
There's a special case where this is needed:
|
|
|
|
eval "some;commands" 2>> "$LOG_FILE" in order to get error messages into the log.
|
|
|
|
eval "some;commands" 2>> "$LOG_FILE" in order to get error messages into the log.
|
|
|
|
|
|
|
|
|
|
|
|
7. Version numbering
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Using bind style versionning:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
YYYYMMDDVV (Year, Month, Day, Revision)
|
|
|
|
|
|
|
|
Ex:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015012402 = 2nd revision of 24 Jan 2015
|
|
|
|
|
|
|
|