Add script 'read_env_from_file.sh'
This commit is contained in:
parent
5e7624107c
commit
94685827b3
107
snippets/read_env_from_file.sh
Executable file
107
snippets/read_env_from_file.sh
Executable file
@ -0,0 +1,107 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
|
temp_file=$(mktemp)
|
||||||
|
|
||||||
|
echo -e "** Testfile '$temp_file' (will be removed at end of script) **"
|
||||||
|
cat <<EOF > $temp_file
|
||||||
|
#! /usr/bin/env bash
|
||||||
|
# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
|
||||||
|
# ...
|
||||||
|
|
||||||
|
INIT_SCRIPT=/etc/init.d/test-service
|
||||||
|
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: postfwd
|
||||||
|
# ...
|
||||||
|
### END INIT INFO
|
||||||
|
|
||||||
|
PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
||||||
|
NAME=postfwd
|
||||||
|
DAEMON=/usr/sbin/\${NAME}
|
||||||
|
PIDFILE=/var/run/\$NAME.pid
|
||||||
|
DESC=postfwd
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "\033[33m"
|
||||||
|
cat $temp_file
|
||||||
|
echo -e "\033[m"
|
||||||
|
echo ""
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
trim() {
|
||||||
|
local var="$*"
|
||||||
|
var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters
|
||||||
|
var="${var%"${var##*[![:space:]]}"}" # remove trailing whitespace characters
|
||||||
|
echo -n "$var"
|
||||||
|
}
|
||||||
|
|
||||||
|
trim_double_quotes() {
|
||||||
|
local var="$*"
|
||||||
|
var="${var#"${var%%[!\"]*}"}" # remove leading whitespace characters
|
||||||
|
var="${var%"${var##*[!\"]}"}" # remove trailing whitespace characters
|
||||||
|
echo -n "$var"
|
||||||
|
}
|
||||||
|
|
||||||
|
read_env_from_file() {
|
||||||
|
|
||||||
|
_file="$*"
|
||||||
|
|
||||||
|
while read _ENV _REST ; do
|
||||||
|
|
||||||
|
_ENV="$(trim $_ENV)"
|
||||||
|
|
||||||
|
if [[ "$_ENV" =~ .{2,}=.+ ]]; then
|
||||||
|
_key="${_ENV%=*}"
|
||||||
|
_val="${_ENV##*=}"
|
||||||
|
|
||||||
|
[[ "$_key" = "PATH" ]] && continue
|
||||||
|
|
||||||
|
|
||||||
|
# - Remove leading / trailling double quotes
|
||||||
|
# - _val="${_val%\"}"
|
||||||
|
# - _val="${_val#\"}"
|
||||||
|
# -
|
||||||
|
_val="$(trim_double_quotes $_val)"
|
||||||
|
|
||||||
|
if [[ -n "$(trim $_key)" ]] && [[ -n "$(trim $_val)" ]] ; then
|
||||||
|
export $_ENV
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
done < "$_file"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
echo -e "\t\033[32m---\033[m"
|
||||||
|
echo -e "\tRead environment variables from Testfile \033[1m$temp_file\033[m:"
|
||||||
|
echo -e "\t\033[32m---\033[m"
|
||||||
|
read_env_from_file $temp_file
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "\tINIT_SCRIPT: \033[32m$INIT_SCRIPT\033[m"
|
||||||
|
echo ""
|
||||||
|
echo -e "\t# PATH Variable should be ommitted. So your real env PATH should be printed out"
|
||||||
|
echo -e "\t#"
|
||||||
|
echo -e "\tPATH: $PATH"
|
||||||
|
echo ""
|
||||||
|
echo -e "\tNAME: \033[32m$NAME\033[m"
|
||||||
|
echo -e "\tDDAEMON: \033[32m$DAEMON\033[m"
|
||||||
|
echo -e "\tPIDFILE: \033[32m$PIDFILE\033[m"
|
||||||
|
echo -e "\tDESC: \033[32m$DESC\033[m"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo ""
|
||||||
|
echo -e "\t# Maybe you have to evaluate some variable.."
|
||||||
|
echo -e "\t#"
|
||||||
|
echo -e "\tDDAEMON: \033[32m$(eval echo $DAEMON)\033[m"
|
||||||
|
echo -e "\tPIDFILE: \033[32m$(eval echo $PIDFILE)\033[m"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
|
||||||
|
rm -f $temp_file
|
||||||
|
exit 0
|
Loading…
Reference in New Issue
Block a user