A library of bash functions to help deal with dates,
arrays, strings, logging, etc.
Please feel free to contribute!
Clone the repository.
git clone https://github.com/evanthegrayt/grayt-bash-library.gitIf you want the files to be linked in an existing directory in your $PATH, Run
the install script.
cd grayt-bash-library
make installIf you want to install them somewhere other than /usr/local/bin, pass a
directory as an argument.
make install DIR=~/binIf you want to just add the repository to your path, add the following line to
your ~/.bashrc, assuming $path_to_repo is the full path to the
grayt-bash-library repository:
export PATH=$PATH:$path_to_repo/libLastly, you could just source the files without adding them to your path by
passing the full path to the files. Assuming $path_to_repo is the full path to
the grayt-bash-library repository:
source $path_to_repo/lib/array.sh # ...or whichever file you want to source.Bash will source files in your path that are non-executable and end with .sh.
By default, the install script links the files to
/usr/local/bin, which is usually in your file path. Once the files are in your
path, you only need to source them by their name.
source array.sh
# Do stuff with arrays...Functions available in the files are all prefixed with the file name, all
uppercase. For instance, functions in date.sh are formatted like so:
# date.sh
DATE_get_month_name() {
# stuff
}
DATE_todays_date() {
# more stuf
}
# Etc...If the function returns an integer, it is most likely being used as a boolean, and can be called as such:
source array.sh
arr=(one two three)
if ARRAY_include 'two' "${arr[@]}"; then
echo "'two' is in the array."
fi
# => 'two' is in the array.Functions in bash can't return a string, so if the function "returns" a
string (either by using a command's output or printing a string via echo) you
have to capture it using command substitution if you need to store it in a
variable:
source date.sh
today=$( DATE_todays_date )
echo $today
# => 20190328
# (Date formats can be changed with optional arguments)Otherwise, if you just want to output the result to the screen, just call the function directly:
source date.sh
DATE_todays_date
# => 20190328I used bats for testing. To run the tests yourself, follow the README's instructions.
You can run the tests with make tests once you have bats installed.
I want to try and maintain POSIX compatibility where possible. Most of the
scripts I write are in bash for portability, but I use zsh for my
interactive shell, and I don't want to maintain two different libraries.
That said, if you see something that could be done in a better way, please submit an issue
I do these projects for fun, and I enjoy knowing that they're helpful to people. Consider starring the repository if you like it! If you love it, follow me on github!