所以我对我的自定义npm脚本和它们运行的bash脚本之间的关系感到困惑.
编辑:我不认为这是一个孤立的bash问题.我可以通过写入echo $2 $1
.sh文件并直接从终端运行它来产生下面描述的预期行为
例如
"scripts": {"report":"echo $2 $1"}
如果我从终端运行:npm run report "first" "second"
因为在我的NPM剧本,我打电话之前,我期待它输出这样的:,但由于某种原因它总是输出第一:(编辑)$2
$1
second first
$1
first second
我通过将参数缓存为变量尝试了一种解决方法,然后打印出来:
"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
编辑*:
问题在于您尝试使用节点的方式.似乎$ X变量没有被节点填充.它只是将您的参数附加到命令的其余部分.
编辑*2:
解决方法
{ "scripts": {"report":"a(){ echo $2 $1; };a"} }