Bash Script Skills
Running documentation for bash script logging
Control Flow
If Statement
if [[ expr ]]; then
commands;
fi
For Loop
for index in series; do
commands
done
Case Switch
case expr in
expr1-1|expr1-2)
commands
;;
esac
Break and continue
break [n]; continue [n]
for breaking/continuing n layer loops counting from inside, default is 1.[]
is often used to represent optional arguments.
String Operation
String Slice
${string:init:length}
Notice the second index is length of slice, not end of slice.
String compare
[[ string1 == stirng2 ]]
.
Specially, [[ string1 == *string2* ]]
check if string2 is contained in string1.
Syntax
Conditional Expression
[[ expr ]]
Make sure space is placed inside the double bracket。
Redirect
Dependencies
Functions defined from other files can be used locally after sorcing the library bash script. The function will be added to the FUNCNAME array and the path to the file will be added to the BASH_SOURCE array.
Notice that source runs the bash script in the current shell process, whereas execute runs the bash script in a new shell process, where current dynamic environment will be lost. Thus, the dependencies for source and for execute must be handled differently
For example, suppose there are three bash scripts A, B and C. where A is the entry point, B is a process to be run, and C is a lib script with an api example used in B.
- If B is sourced by A, then the environment maintains, thus the lib C can be sourced either by A or B;
- If B is executed by A, then the environment refreshes, and lib C must be sourced by B to be defined.