Enhanced exep() incl api help

New helper function escpath() incl api help
This commit is contained in:
2022-02-15 14:00:38 +01:00
parent 1a44ab50f1
commit dcdb6b45a3

View File

@@ -7,9 +7,9 @@
## Version information
VERSION_REV=14
VERSION_REV=15
VERSION_MAJOR=0
VERSION_MINOR=2
VERSION_MINOR=0
## Start of generic script part
@@ -144,13 +144,23 @@ cat <<USAGE_API
verbose (-v): print command before execution
USAGE_API
echo -e "${GREEN} exep \"[COMMANDLINE]\"${NC}"
echo -e "${GREEN} exep \"[COMMAND STRING(s)]\"${NC}"
cat <<USAGE_API
See exe, but support for pipes or redirects.
e.g.: exep echo hello world \\> \\'out put.log\\'
exep echo hello world \\> out\\\\ put.log
exep "echo hello world > 'out put.log'"
exep "echo hello world > out\\ put.log"
Important:
- Shell commands cd, read, ... won't work because COMMANDLINE is started in a new shell.
- Shell commands cd, read, ... won't work because [COMMAND STRING(s)] is started in a new shell.
- All apostrophes need to be esacped since the command line is given as string.
USAGE_API
echo -e "${GREEN} escpath <PATH>${NC}"
cat <<USAGE_API
Escaping non-printable characters with the proposed POSIX $'' syntax
e.g. \$(escpath /my own/ho me/path) = $(escpath /my own/ho me/path)
USAGE_API
echo -e "${GREEN} initSeqConfig [OPTION] <NAME> [TEMPLATE]${NC}"
cat <<USAGE_API
@@ -345,6 +355,11 @@ echoinfoArgs() {
fi
}
# Escaping non-printable characters with the proposed POSIX $'' syntax
escpath() {
printf "%q" "$*"
}
# endCheckEmpty <VariableName> [DESCRIPTION]
# DESCRIPTION : Optional text for error
endCheckEmpty() {
@@ -1101,30 +1116,29 @@ showVersion() {
}
exe() {
local arr=("$@")
if [ $DRY -ne 0 ] ; then
echo -n "--"
fi
if [ $DRY -ne 0 ] || [ $VERBOSE -eq 1 ] ; then
(set -x; : "${arr[@]}")
(set -x; : "$@")
fi
if [ $DRY -eq 0 ] ; then
"${arr[@]}"
"$@"
fi
}
# Handle dry run and verbose output for commands containing pipe and/or redirects
# exep <COMMAND TO RUN AS STRING>
# exep <COMMAND AS STRING(S)>
exep() {
if [ $DRY -ne 0 ] ; then
echo "--++ : $1"
echo "--++ : $*"
elif [ $VERBOSE -eq 1 ] ; then
echo "++ : $1"
echo "++ : $*"
fi
if [ $DRY -eq 0 ] ; then
bash -c "$1"
bash -c "$*"
fi
}