gpt4 book ai didi

node.js - 我如何始终在传播先前错误代码的 bash 中运行 "clean up"命令?

转载 作者:行者123 更新时间:2023-11-28 21:21:14 24 4
gpt4 key购买 nike

我正在为 Node.js 项目设置测试。测试包括与应该从本地提供的静态内容(图像)交互 http-server .

当测试完成时——无论是成功还是失败——我想结束服务器进程并以正确的代码退出。我在我的 npm 脚本中想到的是:

"server": "http-server testdata -p 9876 -s",
"testcmd": "...",
"test": "npm run server & npm run testcmd && kill $(lsof -t -i:9876) || (kill $(lsof -t -i:9876) && exit 1)",

哪个“有效”,但有两个问题:

  • 它重复代码,因为我不知道如何在任何情况下运行,而不是定义 ||&& 情况
  • testcmd 的任何非零退出代码将始终转换为 1 退出代码 - 理想情况下我想传播确切的退出代码

我试着阅读这篇文章,发现人们在谈论陷阱,但无法让它发挥作用。

什么是简化此控制流场景的好方法?

最佳答案

你的两个问题是相关的:如果你的命令得到更好的分解,你会更容易实现你想要的。

既然你不想设置陷阱(并且为了这个任务,我不怪你),你需要做的是捕获testcmd<的退出状态 以便您稍后可以重申它。完成后,您可以无条件地运行清理,因此不会重复。例如:

npm run server & (npm run testcmd; status=$?; kill $(lsof -t -i:9876); exit $status)

也许扩展到最近执行的 [部分] 管道的退出状态的特殊 $? 参数是您遗漏的部分。

关于node.js - 我如何始终在传播先前错误代码的 bash 中运行 "clean up"命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51083585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com