#!/bin/bash
# 设置默认值
downloadUrl="www.down.com"
token=""
# 定义函数 start
start() {
echo "Starting service..."
}
# 定义函数 stop
stop() {
echo "Stopping service..."
}
# 定义函数 restart
restart() {
stop
start
}
# 如果未给出任何参数,则打印用法信息并退出脚本
if [ $# -eq 0 ]; then
echo "Usage: $0 {start|stop|restart} [--downloadUrl <url>] [--token <token>]"
exit 1
fi
# 处理位置参数
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Unknown command: $1"
echo "Usage: $0 {start|stop|restart} [--downloadUrl <url>] [--token <token>]"
exit 1
;;
esac
# 使用 getopt 处理可选参数
ARGS=$(getopt -o "" -l downloadUrl:,token: --name "$(basename "$0")" -- "$@")
if [ $? -ne 0 ]; then
echo "Terminating..." >&2
exit 1
fi
eval set -- "$ARGS"
while true; do
case "$1" in
--downloadUrl)
downloadUrl="${2}"
shift 2
;;
--token)
token="${2}"
shift 2
;;
--)
shift
break
;;
*)
echo "Internal error!"
exit 1
;;
esac
done
# 输出可选参数值
echo "Download URL: $downloadUrl"
echo "Token: $token"
# 处理剩余的参数
for arg in $@
do
echo "processing $arg"
done
该脚本首先定义了三个事件函数 start、stop 和 restart,然后使用
case
语句处理位置参数并调用相应的函数。接下来,使用
getopt
命令处理可选参数,并通过赋值语句将参数值存储到变量中。最后输出可选参数值,在脚本末尾处理了剩余的参数并输出。注意:上述代码中的
proessing arg
这一行只是做示例演示,可以根据实际需要更改。
您可以将以上代码拷贝到一个名为
aa.sh
的文件中,并在 terminal 中执行以下命令运行该脚本:
sh aa.sh restart --downloadUrl 1111 --token 111
如果您想要运行其他的命令事件,例如 stop,可以将
restart
改为
stop
,或者运行以下命令:
sh aa.sh stop --downloadUrl 1111 --token 111
希望这对您有帮助!
添加一个download方法
download 函数仅仅只是打印了一句话,并没有做任何有用的事情,因此执行 download 函数时不会有任何实际效果。如果您希望实现从指定 URL 下载文件的功能,请按照以下方法修改 download 函数:
# 定义函数 download
download() {
if [ -z "$downloadUrl" ]; then
echo "You must specify a download URL with --downloadUrl."
elif [ -z "$token" ]; then
echo "You must specify an authentication token with --token."
else
echo "Downloading file from ${downloadUrl} with token ${token}..."
# 在这里实现您的下载逻辑
wget "${downloadUrl}?token=${token}" -O downloaded_file
fi
}
必须等待下载完,才能启动start
# 定义函数 start
start() {
if [ ! -f "downloaded_file" ]; then
echo "File not found. Waiting for download to complete..."
while [ ! -f "downloaded_file" ]
do
sleep 1
done
echo "Download completed."
fi
echo "Starting service..."
}
下载方法里面 如果参数校验不通过,直接返回
# 定义函数 download
download() {
if [ -z "$downloadUrl" ]; then
echo "You must specify a download URL with --downloadUrl."
return 1
elif [ -z "$token" ]; then
echo "You must specify an authentication token with --token."
return 1
fi
echo "Downloading file from ${downloadUrl} with token ${token}..."
# 在这里实现您的下载逻辑
wget "${downloadUrl}?token=${token}" -O downloaded_file
echo "File downloaded."
}