node.js - 如何从 npm 运行的 bash 脚本中打印 $2 BEFORE $1?

标签 node.js bash shell npm

所以我对我的自定义 npm 脚本和它们运行的​​ bash 脚本之间的关系感到困惑。 编辑:我不认为这是一个孤立的 bash 问题。我可以通过将 echo $2 $1 写入 .sh 文件并直接从终端运行它来产生下面描述的预期行为

例如

"scripts": {"report":"echo $2 $1"}

如果我从终端运行它:npm run report "first""second" 因为在我的 npm 脚本中,我调用了 $2 BEFORE $1,我希望它输出这个:second first, 但出于某种原因,它总是先打印 $1:first second(edited)

我尝试了一种变通方法,将我的参数缓存为变量然后打印它们:

"scripts": {"report": "(FIRST=$1 && SECOND=$2) && echo $SECOND $FIRST"}

但输出相同:npm run report "first""second" => first second

什么给了?

最佳答案

以下 bash 文件适合我:

echo $2 $1

运行:

bash file.sh 1 2

输出:

2 1

编辑*:

问题在于您尝试使用 Node 的方式。似乎 $X 变量没有被 Node 填充。它只是将您的参数附加到命令的其余部分。

编辑*2:

解决方法

{
"scripts": {"report":"a(){ echo $2 $1; };a"}
}

关于node.js - 如何从 npm 运行的 bash 脚本中打印 $2 BEFORE $1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34113475/

相关文章:

node.js - Nodejitsu 部署 webrtc 演示无法服务器客户端 javascript

mysql - Lambda 函数向 RDS 插入数据时出现 ETIMEDOUT

linux - 如何复制文本文件的一部分并将它们粘贴到新文件中

regex - 用于处理目录的 Bash 脚本 (REGEX)

bash - 通过 grep 两次输出管道尾部

node.js - 为什么管道在回调中不起作用

node.js - 尽管 MongoDB 中存在集合,Mongoose 显示空对象

bash - 使 bash 脚本自跟踪的更好方法?

javascript - 祝福名单失败

regex - 使用 sed 更改文件扩展名