首页 > 解决方案 > 命令注册/执行文件?

问题描述

使用 node.js 和 npm,我们可以使用 package.json 给脚本起别名。

{
  "scripts": {
    "greet": "echo hi,"
  }
}
$ npm run greet foo

hi, foo

使用 Makefile,可以实现类似的事情。

greet:
    echo hi,
$ make greet

hi,

虽然 makefile 不允许附加参数。

$ make greet foo

hi,
make: *** No rule to make target 'foo'.  Stop.

所以,我想知道命令执行是否有替代方案。

我希望,虽然不是必需的,但有一个工具可以满足,

  1. 跨平台
  2. 允许附加参数
  3. 语言中立
  4. 声明式
  5. 现代的

如果有这样的工具,请推荐!

谢谢

标签: shellmakefilecommandcommand-line-interfacepackage.json

解决方案


我会做类似的事情:

OPSTR ?=

greet:
ifneq( $(OPSTR),)
  echo ”Hi, $(OPSTR)”
else
  echo “Hi”
endif

只要您不介意必须记住定义 OPSTR:

make greet OPSTR=foo

编辑:将其包装在 shell 脚本中

#! /usr/bin/env bash

if [ “$#” == 1 ];
then
  # warn
fi

make greet “$@“ 

注意:我不确定传递整个数组是否有效......


推荐阅读