57 lines
1.2 KiB
Bash
57 lines
1.2 KiB
Bash
#!/usr/bin/env bash
|
|
# Common functions for the lab scripts
|
|
# Copyright 2021 Bryan C. Roessler
|
|
|
|
# Don't run this script directly
|
|
[[ "${BASH_SOURCE[0]}" == "${0}" ]] && exit 0
|
|
|
|
|
|
ask_ok() {
|
|
read -r -p "$* [y/N]" response
|
|
response=${response,,}
|
|
[[ ! "$response" =~ ^(yes|y)$ ]] && return 1
|
|
return 0
|
|
}
|
|
|
|
|
|
is_root() {
|
|
user=$(whoami)
|
|
[[ $user != "root" ]] && echo "Script must be run with sudo rights!" && exit 1
|
|
}
|
|
|
|
|
|
if ! type -t readarray >/dev/null; then
|
|
readarray() {
|
|
local cmd opt t v=MAPFILE
|
|
while [ -n "$1" ]; do
|
|
case "$1" in
|
|
-h|--help) echo "minimal substitute readarray for older bash"; exit; ;;
|
|
-r) shift; opt="$opt -r"; ;;
|
|
-t) shift; t=1; ;;
|
|
-u)
|
|
shift;
|
|
if [ -n "$1" ]; then
|
|
opt="$opt -u $1";
|
|
shift
|
|
fi
|
|
;;
|
|
*)
|
|
if [[ "$1" =~ ^[A-Za-z_]+$ ]]; then
|
|
v="$1"
|
|
shift
|
|
else
|
|
echo -en "${C_BOLD}${C_RED}Error: ${C_RESET}Unknown option: '$1'\n" 1>&2
|
|
exit
|
|
fi
|
|
;;
|
|
esac
|
|
done
|
|
cmd="read $opt"
|
|
eval "$v=()"
|
|
while IFS= eval "$cmd line"; do
|
|
line=$(echo "$line" | sed -e "s#\([\"\`]\)#\\\\\1#g" )
|
|
eval "${v}+=(\"$line\")"
|
|
done
|
|
}
|
|
fi
|