所以我对我的自定义 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/