Bash Examples: Basic Information and Control Structures
Last updated:- Shebang
- If then else
- If then else with grep matches
- If not
- AND operator
- OR operator
- Access command-line arguments
- Function definition
- Function with parameters
- Number of parameters passed to function
- Check if command exists
Shebang
add this to the start of every script.
#!/usr/bin/env bash
If then else
spaces before and after [[
and before ]]
are important!
if [[ condition ]];then
# do stuff
elif [[ other condition ]]; then
# something else
else
# or do this
fi
If then else with grep matches
Does $PATH
include "some_string"
?
if echo $PATH | grep -q "some_string"; then
echo "matches!"
else
echo "no matches"
fi
If not
Spaces are important!
if [[ ! condition ]];then
# do stuff
fi;
AND operator
Use &&
:
a=true
b=false
if [[ $a && $b ]];then
# will NOT print
echo "a and b is true"
fi
OR operator
Use ||
a=true
b=false
if [[ $a || $b ]];then
# will print
echo "a or b is true"
fi
Access command-line arguments
$#
is the number of arguments provided to the current script
$0
is the script name
$1
, $2
, $3
and so on until $9
are the first argument, second argument, third argument and so on.
Function definition
function do_something {
echo "this gets printed to standard output"
}
# to call it, just use its name
do_something
Function with parameters
$1
is the first argument, $2
is the second argument, etc.
function say_something {
echo "$1"
}
$ say_something "foobar"
# prints "foobar"
$ say_something
# prints nothing
$ say_something foo bar
# prints "foo" (other arguments weren't accessed)
Number of parameters passed to function
To get the number of arguments sent to the function use $#
myfunction(){
if [[ $# -eq 0 ]]; then
# no parameters passed
elif [[ $# -eq 1 ]]; then
# 1 parameter passed
else
# 2 or more parameters passed
fi
}
Check if command exists
The program deactivate
is enabled if you have an active python virtual environment.
If you wish to test whether the current user is in a virtualenv, one way is to test whether the command deactivate
exists, you can use the type
builtin and test its result;
Example: Test if command deactivate
exists in this system
# piping the output of this command to dev null
# to avoid noise
ret=$(type deactivate &> /dev/null)
if [[ $? -eq 0 ]]; then
echo "returned 0, we're in a virtual env"
else
echo "nonzero return code, no virtualenv"
fi