我有这个bash shell-script命令,如果make成功(以零退出状态终止)导致日期运行,反之亦然:
make && date
Run Code Online (Sandbox Code Playgroud)
但现在我想处理它的输出,例如
make | sed s/a/A/
Run Code Online (Sandbox Code Playgroud)
如果我做
make | sed s/a/A/ && date
Run Code Online (Sandbox Code Playgroud)
即使make失败,日期也会运行.
如果我改为做
make && date | sed s/a/A/
Run Code Online (Sandbox Code Playgroud)
在sed的过程日期的输出,而不是化妆的.
你知道任何解决方案吗?谢谢!
PS我试过这些:
(make | sed s/a/A/) && date
Run Code Online (Sandbox Code Playgroud)
make失败时,日期仍会运行.
(make && (date > /dev/null)) | sed s/a/A/
Run Code Online (Sandbox Code Playgroud)
make成功时,日期不会运行.
如果我SIGTERM使用该kill命令向进程发送信号,我期望退出代码,但在终止进程后运行以下命令时总是得到0(零):
echo $?
Run Code Online (Sandbox Code Playgroud)
根据这篇文章中的答案,我在发送SIGTERM一个进程时应该得到143 :始终应用Java结束"退出143"Ubuntu
但我没有得到退出代码.为什么?
我想在Makefile中检查grep搜索的结果.与此解决方案相反,我不希望使用shell命令.另外,当grep找不到字符串时,我不希望Makefile引发错误(退出代码为1被视为错误).
以下尝试忽略该错误并检查退出代码:
all:
-grep term log*
echo $$?
@case "$$?" in \
0)\
echo "found";; \
*) \
echo "not found";;\
esac;
Run Code Online (Sandbox Code Playgroud)
不幸的是,退出代码始终为0.
我想知道是否可以配置visual studio 2008调试器以在线程以精确错误代码(或至少任何非零值)退出时停止执行.我的应用程序使用了大量的线程,因此无法手动跟踪它们.
当程序中的任何线程命中"exit(X);"时,有没有办法告诉VS2008中断?(X与0不同)和显示源?
multithreading exit-code visual-studio-2008 visual-studio-debugging
如果我杀了一个Android应用程序System.exit(...),我传递的状态代码是否重要?我找不到任何关于Android是否会忽略它的文档,或者某些文档是否会导致任何错误消息或具有任何其他含义.
我有一个正在使用的程序,findstr当找到字符串时errorlevel返回0,当找不到字符串时errorlevel返回1.好吧,我可以解决这个问题.
问题出在哪里,我找不到任何关于每个errorlevel方法的官方文件findstr.我需要知道,如果别的了findstr所能返回errorlevel的1,或者如果它只返回1时找不到字符串.
如果有"官方"文档的链接是首选,但任何输入都将非常感谢.
提前致谢!
这是myscript.sh:
#!/bin/bash
function mytrap {
echo "Trapped!"
}
trap mytrap EXIT
exit 3
Run Code Online (Sandbox Code Playgroud)
当我运行它:
> ./myscript.sh
echo $?
3
Run Code Online (Sandbox Code Playgroud)
为什么脚本的退出代码与陷阱的退出代码相同而没有它?通常,函数隐式返回最后执行的命令的退出代码.在这种情况下:
mytrap能回归0mytrap是最后执行的函数,脚本应返回0为什么不是这样?我的想法错在哪里?
我发现了我的奇怪行为,我无法解释.以下代码工作正常:
function prepare-archive {
blah-blah-blah...
_SPEC_FILE=$(check-spec-file "$_GIT_DIR/packaging/")
exit $?
blah-blah-blah...
}
Run Code Online (Sandbox Code Playgroud)
意味着我得到了我期望的价值:
bash -x ./this-script.sh:
++ exit 1
+ _SPEC_FILE='/home/likern/Print/Oleg/print-service/packaging/print-service.spec
/home/likern/Print/Oleg/print-service/packaging/print-service2.spec'
+ exit 1
Run Code Online (Sandbox Code Playgroud)
只要我local向变量添加定义:
local _SPEC_FILE=$(check-spec-file "$_GIT_DIR/packaging/")
Run Code Online (Sandbox Code Playgroud)
我得到以下:
bash -x ./this-script.sh:
++ exit 1
+ local '_SPEC_FILE=/home/likern/Print/Oleg/print-service/packaging/print-service.spec
/home/likern/Print/Oleg/print-service/packaging/print-service2.spec'
+ exit 0
$:~/MyScripts$ echo $?
0
Run Code Online (Sandbox Code Playgroud)
问题:为什么?发生了什么事?我可以捕获从subshell到local变量的输出并可靠地检查subshell的返回值吗?
PS:prepare-archive在主shell脚本中调用.第一个exit是exitfrom check-spec-file函数,第二个是prepare-archive函数 - 这个函数本身是从main shell脚本执行的.我从返回值check-spec-file的exit 1,那么通过这个值exit $?.因此我希望它们应该是一样的.
我正在寻找所有可能的jvm退出代码(不是java System.exit(x))的完整列表.我使用搜索引擎唯一能找到的是SIGTERM退出代码列表:http://journal.thobe.org/2013/02/jvms-and-kill-signals.html.我想知道是否有针对未捕获的异常的特定退出代码?
我有一个bash shell脚本,可以像这样调用一些PHP脚本.
#!/bin/bash
php -f somescript.php
php -f anotherscript.php
Run Code Online (Sandbox Code Playgroud)
我想根据这些脚本的结果撰写错误日志和/或活动报告.
有什么办法可以在shell脚本中获取php脚本的退出状态吗?
我可以使用整数退出状态或字符串消息.