Problem:
I want quick reminders for bash shell scripting because I don't write bash scripts often enough to memorize everything.Notes:
The following reminders assume you're already familiar with the basics of bash shell scripting and simply need a reminder of more commonly used syntax, etc. These reminders are for myself but I hope you also find them useful.Reminder shortcuts
As the number of reminders grow I hope this index will help you find what you need. (It certainly helps me.)
- Top of script starts with #!/bin/bash
- Simple variables
- Concatenate strings
- String quotes of bash scripting
- Bash check if directory exists
- Bash for-loop
- Bash if-and, bash if-or
- Bash if directory does not exist
- Bash check if file exists
- For items in bash array
- Command line arguments in bash scripting
- How to check if git repo needs update from remote upstream with bash scripting
- How to check if script is on correct git branch for bash script
Reminders:
Top of script starts with #!/bin/bash
#!/bin/bash
Simple variables
Examples of simple variables
NAME="Delta"
echo "Hello $NAME!"
Concatenate strings
HELLO="Hello, "
NAME="Lily"
echo $HELLO$NAME
# output: Hello, Lily
HELLO="Hello, "
NAME="Alex"
GREET="${HELLO}${NAME}!"
echo "$GREET"
#output: Hello, Alex!
GREET="Hello, "
GREET+="Ninja"
echo "$GREET"
#output: Hello, Ninja
String quotes of bash scripting
DIRECTION="Right"
echo "Turn $DIRECTION" # => Turn Right
echo 'Turn $DIRECTION' # => Turn $DIRECTION
Bash for-loop
VAR=""
for NAME in 'alpha' 'bravo' 'charlie' 'delta'; do
VAR+="${NAME} "
done
echo $VAR
# output: alpha bravo charlie delta
Bash if-and, bash if-or
if [ $FILENAME == 'important.txt' ] && [ -f $FILENAME ]; then
echo "this is an important file"
fi
if [ $NAME == 'Hector' ] || [ $NAME == 'Miguel' ]; then
echo "this person is on a hero's journey"
fi
Bash check if directory exists
DIR="/usr/mydir/"
if [ -d "$DIR" ]; then
echo "directory exists"
else
echo "directory not found"
exit 1
fi
DIR="/usr/mydir/"
[ "$DIR" == "" ] && { echo "directory string is empty"; exit 1; }
[ -d "${DIR}" ] && echo "directory exists" || echo "directory not found"
Bash if directory does not exist
DIR="/usr/mydir/"
if ! [ -d "$DIR" ]; then
echo "directory does not exist"
else
echo "directory exists"
fi
Bash check if file exists
if [ -f "/opt/myfile.txt" ]; then
echo "file found"
else
echo "file not found
fi
For items in bash array
DIR3="/opt/mydir3"
DIRTOCHECK=("/opt/mydir1" "/opt/mydir2" $DIR3)
for dir in "${DIRTOCHECK[@]}"
do
if [ -d "${dir}" ]; then
echo "found directory ${dir}"
else
echo "did not find directory ${dir}"
fi
done
Command line arguments in bash scripting
# example: yourscript.sh arg1 2nd-arg
echo "All arguments values:" $@
# output: All arguments values: arg1 2nd-arg
echo "First argument:" ${1}
# output: First argument: arg1
echo "Second argument:" ${2}
# output: Second argument: 2nd-arg
echo "Total arguments:" $#
# output: Total arguments: 2
For more detailed information, please refer to this tecadmin.net tutorial
How to check if git repo needs update from remote upstream with bash scripting
This how-to assumes you already have a git repository installed, a remote upstream setup, and have navigated into the local repository via your script.
git fetch
if [ $(git rev-parse HEAD) == $(git rev-parse @{u}) ]; then
# add logic for when no update is needed, e.g.
echo 'already up to date.'
else
# add logic for when update is needed, e.g.
echo 'updating to latest.'
git pull
fi
How to check if script is on correct git branch for bash script
The following example assumes master branch is desired and the script has already navigated to the local repository.
if ! [ $(git rev-parse --abbrev-ref HEAD) == "master" ]; then
echo "NOT in master branch."
else
echo "in master branch."
fi
Why these reminders?
This page is intended to remind myself quickly without requiring too much reading. I hope it's helped you out, too.
No comments:
Post a Comment