Bash Shell Scripting Reference Guide
She-bang Line
- Forces shell script to run in a specific Shell
- Must be at beginning of first line (eg. #!/bin/bash)
Variables
Environment
- System-wide or "global" variable
- Usually appear in UPPERCASE letters
- Can view with command: set | more
- $ in front to expand variable to value
- Examples: USER, PATH, HOME, SHELL
User-defined
- Variable created by user (command line, scripting)
- Examples:
myVar="my value"; readonly myVar; export myVar
read -p "enter value: " myVar
Positional parameters
- Assign values with set command or shell script arguments
- These variables are numbered (eg. $1, $2 ... $10}
- Special parameters:
$*
,$@
,$#
,$$
,$?
Command Substitution
- Useful method to expand output from a command to be used as an argument for another command.
- Examples:
file $(ls)
set $(ls);echo $#;echo $*
echo "hostname: $(hostname)"
if / elif / else statements
- If a command runs (even pipeline command like to grep to match) will be true (0); otherwise, false (non-zero), thus can use with logic statements.
- Example:
if echo $myVar | grep "match"
then
echo "Match"
fi
- The test command is used to test conditions. Square brackets [ ] is short-cut for test command (args contained inside with spaces). The exit command can be used to terminate the shell script with a false value.
- Example:
if [ $USER = "root" ]
then
echo "You must be root"
exit1
fi
- For numberic comparison, use the test options: -gt,-ge, -lt, -le, -eq, -ne
- Example:
if [ $grade -gt 79 ]
then
echo "You get Good Mark"
elif [ $grade -gt 49 ]
then
echo "You pass"
else
echo "You fail"
fi
- For testing for file information, you can use -d to test if directory pathname exists, and -f if the file pathname exists. You can use ! for negation.
- Examples:
if [ -d directory-pathname ]
then
echo "directory exists"
fi
if [ ! - f file-pathname ]
then
echo "File does not exist"
fi