我正在尝试使用"脚本结果"要求来检查特定进程是否正在运行,以便我可以在安装开始之前向用户发送消息.我的脚本是一个shell脚本,失败返回1,成功返回0.我遇到的问题是,无论我的返回值如何,安装程序流程都会将其解释为失败.我没有使用一个非常简单的脚本:
#!/bin/bash
echo "script starting">> /tmp/myfile
true
Run Code Online (Sandbox Code Playgroud)
(回声是为了向自己保证脚本实际上正在运行).我已经尝试用很多东西替换最后一行(退出0,退出1,"真","真")但没有任何结果导致测试通过.
我还发现了以下JavaScript代码,当我激活此需求时,它会添加到distribution.dist中.
<installation-check script="pm_install_check();"/>
<script>function pm_install_check() {
if(!(system.run('path/to/script/myscript.sh') == true)) {
my.result.title = 'Title';
my.result.message = 'Message';
my.result.type = 'Fatal';
return false;
}
return true;
}
</script>
Run Code Online (Sandbox Code Playgroud)
据我所知,if语句中的表达式永远不会评估为true.所以,我认为这是我的问题.不过,我不知道如何绕过它,因为这段代码是由PackageMaker生成的.
我决定在这种情况下工作,这是PackageMaker中的一个错误,并且接近于解决方法.我没有使用"脚本结果"的要求,而是使用了"Javascript的结果"要求,并构建了一个Javascript函数,看起来像
function my_check() {
code = system.run('path/to/script/myscript.sh');
return code == 0;
}
Run Code Online (Sandbox Code Playgroud)
现在我唯一的问题是,只有当我通过绝对路径指向我的脚本时,这才会起作用.显然,这给安装者带来了问题.
小智 7
这对你来说可能为时已晚,但我觉得应该在某处记录下来.
今天早上的大部分时间里,我一直在寻找答案.长话短说我最后看到了泛型bash脚本,我发现了一些关于从脚本调用的脚本中返回值的信息.以下是它的完成方式:
您使用exit 0(成功)使用的任何地方$(exit 1).
正如您所期望的exit 1应该被替换为$(exit 0).
我意识到它是倒退的,我并没有真正得到它背后的推理,但经过一些实验,这就是我发现的.
| 归档时间: |
|
| 查看次数: |
2109 次 |
| 最近记录: |