has() { | |
local saved_xtrace | |
[[ $- == *x* ]] && saved_xtrace=-x || saved_xtrace=+x | |
set +x | |
local p=$1 | |
shift | |
local i ret=1 | |
for i in "$@"; do | |
if [[ "${i}" == "${p}" ]]; then | |
ret=0 | |
break | |
fi | |
done | |
set ${saved_xtrace} | |
return ${ret} | |
} | |
sudo_preserve_env() { | |
local saved_xtrace | |
[[ $- == *x* ]] && saved_xtrace=-x || saved_xtrace=+x | |
set +x | |
local vars=() | |
while [[ $# -gt 0 ]]; do | |
local arg=$1 | |
shift | |
case ${arg} in | |
--) break ;; | |
*) vars+=("${arg}=${!arg}") ;; | |
esac | |
done | |
set ${saved_xtrace} | |
sudo env "${vars[@]}" "$@" | |
} |