我可以在node.js中运行bash命令,如下所示:
var sys = require('sys')
var exec = require('child_process').exec;
function puts(error, stdout, stderr) { sys.puts(stdout) }
exec("ls -la", function(err, stdout, stderr) {
console.log(stdout);
});
Run Code Online (Sandbox Code Playgroud)
如何获取该命令的退出代码(ls -la在此示例中)?我试过跑步
exec("ls -la", function(err, stdout, stderr) {
exec("echo $?", function(err, stdout, stderr) {
console.log(stdout);
});
});
Run Code Online (Sandbox Code Playgroud)
不管以前命令的退出代码如何,这总是返回0.我错过了什么?
我想用批处理文件启动一个进程,如果它返回非零,则执行其他操作.我需要正确的语法.
像这样的东西:
::x.bat
@set RetCode=My.exe
@if %retcode% is nonzero
handleError.exe
Run Code Online (Sandbox Code Playgroud)
作为奖励,您可以考虑回答以下问题,请:)
if?My.exe无法启动因为某些DLL丢失,我的工作是否正常?如果没有,我怎么能检测到My.exe无法启动?如果是,在哪个操作系统,shell或其他什么?
考虑下面的java程序(我只是以java为例,任何语言对这个问题都有好处,更多的是关于操作系统):
public class ExitCode {
public static void main(String args[]) {
System.exit(Integer.parseInt(args[0]));
}
}
Run Code Online (Sandbox Code Playgroud)
在Linux和bash上运行它,它总是返回不等于255的值,例如(echo $?打印上一个执行命令的退出代码)
> java ExitCode 2; echo $?
2
> java ExitCode 128; echo $?
128
> java ExitCode 255; echo $?
255
> java ExitCode 256; echo $?
0
> java ExitCode 65536; echo $?
0
Run Code Online (Sandbox Code Playgroud)
编辑:下面的(只有,到目前为止)答案完全解释了在UNIX上发生的事情.我仍然想知道其他操作系统.
我如何退出C++程序.调用哪个函数来结束程序以及该方法采用哪些值?
为了澄清我想从我的代码中退出C++程序.我可能想要退出该程序main功能之外的程序.
$ cat e.py
raise Exception
$ python e.py
Traceback (most recent call last):
File "e.py", line 1, in <module>
raise Exception
Exception
$ echo $?
1
Run Code Online (Sandbox Code Playgroud)
我想将此退出代码从1更改为3,同时仍然转储完整的堆栈跟踪.最好的方法是什么?
我的问题与此问题非常相似,除了我试图使用Invoke-Command捕获ScriptBlock的返回代码(因此我不能使用-FilePath选项).这是我的代码:
Invoke-Command -computername $server {\\fileserver\script.cmd $args} -ArgumentList $args
exit $LASTEXITCODE
Run Code Online (Sandbox Code Playgroud)
问题是Invoke-Command没有捕获script.cmd的返回码,所以我无法知道它是否失败.我需要知道script.cmd是否失败.
我也尝试使用New-PSSession(这让我看到了远程服务器上的script.cmd的返回代码)但是我找不到任何方法将它传递回我的调用Powershell脚本来实际处理有关失败的任何事情.
powershell return-value exit-code windows-scripting invoke-command
我想设置一次返回值,使其进入while循环:
#!/bin/bash
while [ $? -eq 1 ]
do
#do something until it returns 0
done
Run Code Online (Sandbox Code Playgroud)
为了使这个工作,我需要$? = 1在开始时设置,但这不起作用.
鉴于此代码
func doomed() {
os.Exit(1)
}
Run Code Online (Sandbox Code Playgroud)
如何正确测试调用此函数将导致存在使用go test?这需要在一组测试中发生,换句话说,os.Exit()调用不会影响其他测试并且应该被捕获.
如何减少以下bash脚本?
grep -P "STATUS: (?!Perfect)" recess.txt && exit 1
exit 0
Run Code Online (Sandbox Code Playgroud)
看起来我应该可以用一个命令来完成它,但我这里总共有3个.
我的程序应该:
答案奖授予最严格的剧本.谢谢!
计划应该有退出状态0此文件:
FILE: styles.css
STATUS: Perfect!
FILE: contour-styles.css
STATUS: Perfect!
Run Code Online (Sandbox Code Playgroud)
程序应该具有此文件的退出状态1(或非零):
FILE: styles.css
STATUS: Perfect!
FILE: contour-styles.css
STATUS: Busted
FAILURES: 1 failure
Id's should not be styled
1. #asdf
Run Code Online (Sandbox Code Playgroud) exit-code ×10
bash ×3
return-value ×2
batch-file ×1
c++ ×1
exception ×1
exit ×1
go ×1
grep ×1
java ×1
node.js ×1
powershell ×1
process ×1
python ×1
regex ×1
shell ×1
system.exit ×1
testing ×1
windows ×1