记录一下 shell 脚本模板。
#!/usr/bin/env bash
args_num=$#
action="${1}"
ALLOWED_ACTION_ARGS=("set" "unset" "test")
function print_ok() {
local msg="${1}"
echo "${msg}"
}
function print_err() {
local msg="${1}"
echo "${msg}" > /dev/stderr
}
function contain() {
local list="${1}"
local ele="${2}"
for i in ${list[*]};
do
if [ "${ele}" == "${i}" ]; then
return 0
fi
done
return 1
}
function check_args_num() {
if [ ${args_num} != 1 ]; then
print_err "Wrong args num"
return 1
fi
}
function check_action_arg() {
if ! contain "${ALLOWED_ACTION_ARGS[*]}" "${action}"; then
print_err "Action arg must be [ set || unset || test ]"
return 1
fi
}
function set_proxy () {
export ALL_PROXY=http://www.vksir.zone
print_ok "Set proxy success"
}
function unset_proxy() {
unset ALL_PROXY
print_ok "Unset proxy success"
}
function test_proxy() {
if curl -k https://www.google.com --connect-timeout 3 >/dev/null 2>&1; then
print_ok "Proxy is available"
else
print_err "Proxy is not available"
fi
}
if ! check_args_num; then
return 1
fi
if ! check_action_arg; then
return 1
fi
if [ "${action}" == "set" ]; then
set_proxy
elif [ "${action}" == "unset" ]; then
unset_proxy
elif [ "${action}" == "test" ]; then
test_proxy
fi
return $?
source proxy set
source proxy unset
source proxy test
注意,这里如果想写 source 脚本,那就不能使用 exit,否则会使 ssh 会话退出。