基于任务的语言替代 Makefile

non*_*one 2 bash programming-languages makefile

Makefile's I 中,我可以定义任务,以便用户可以指定他/她想要做什么:

make run
make serve
make deploy
..
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,但我觉得Makefile's 对于所有这些依赖项分析和相对晦涩的语法/执行而言,对于此目的来说是一种矫枉过正。是否有任何专门为此目的设计的语言/工具最好在大多数系统上可用?或者知道如何bash为此目的使用类似的东西?

non*_*one 5

所以在 Arjun 的建议下,我想出了一个sh脚本:

#!/usr/bin sh

# only one task at a time
if [ $# != 1 ]; then
    echo "usage: $0 <task_name>"
fi

run() {
    echo "I'm now running"
}

serve() {
    echo "I'm now serving"
}

deploy() {
    echo "I'm now deploying"
}

case $1 in
    "run")        run;;
    "serve")      serve;;
    "deploy")     deploy;;
esac
Run Code Online (Sandbox Code Playgroud)

这比我想象的要容易得多。我已命名该文件,task以便我现在可以将任务运行为:

$ sh task serve
I'm now serving
Run Code Online (Sandbox Code Playgroud)

或者如果文件是可执行的:

$ ./task deploy
I'm now deploying
Run Code Online (Sandbox Code Playgroud)

switch声明中只有一点重复,但对我来说已经足够了。如果它可以变得更好,请随时给我留言。