我目前有两个 bash 函数,一个用于上传,另一个用于下载文件。我想创建一个 bash 脚本,允许用户指定他们想要做的两个中的哪一个。
我遇到的问题是上传和下载功能无论如何都会运行。例如:
function upload() {
var=$1
#something goes here for upload
}
function download() {
var=$1
#something here for download
}
main() {
case "$1" in
-d) download "$2";;
-u) upload "$2";;
*) "Either -d or -x needs to be selected"
esac
}
Run Code Online (Sandbox Code Playgroud)
我不能得到的main()只和抑制运行download
和upload
备用。
您还需要调用该main
函数,并将脚本的命令行参数传递给它:
#!/bin/sh
upload() {
echo "upload called with arg $1"
}
download() {
echo "download called with arg $1"
}
main() {
case "$1" in
-d) download "$2";;
-u) upload "$2";;
*) echo "Either -d or -u needs to be selected"; exit 1;;
esac
}
main "$@"
Run Code Online (Sandbox Code Playgroud)
function foo
这里不需要 ksh 样式的声明,foo()
而是使用它,因为它是标准的并且得到更广泛的支持。