如何从npm运行的bash脚本中打印$ 2 BEFORE?

Jos*_*ley 2 bash shell node.js npm

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

例如

"scripts": {"report":"echo $2 $1"}
Run Code Online (Sandbox Code Playgroud)

如果我从终端运行:npm run report "first" "second" 因为在我的NPM剧本,我打电话之前,我期待它输出这样的:,但由于某种原因它总是输出第一:(编辑)$2$1second first$1first second

我通过将参数缓存为变量尝试了一种解决方法,然后打印出来:

"scripts": {"report": "(FIRST=$1 && SECOND=$2) && echo $SECOND $FIRST"}
Run Code Online (Sandbox Code Playgroud)

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

是什么赋予了?

Mik*_*kel 5

以下bash文件对我有用:

echo $2 $1
Run Code Online (Sandbox Code Playgroud)

运行:

bash file.sh 1 2
Run Code Online (Sandbox Code Playgroud)

输出:

2 1
Run Code Online (Sandbox Code Playgroud)

编辑*:

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

编辑*2:

解决方法

{
"scripts": {"report":"a(){ echo $2 $1; };a"}
}
Run Code Online (Sandbox Code Playgroud)