Questions tagged «error-handling»

使用此标记可以解决有关如何处理Shell脚本中生成的错误的问题。



3
chmod +静默模式+尽管有错误,如何强制退出代码0
是否可以执行chmod并忽略命令中的错误 示例(不存在备注file.txt来显示示例) 当我打字 chmod 777 file.txt 我在输出中收到错误 chmod: cannot access file.txt : no such file or directory 因此,我将-f标志添加到命令中,如下所示:(为了显示这种情况,file.txt不存在) chmod -f 777 file.txt echo $? 1 但是从示例chmod返回1 请提供错误信息,建议如何强制chmod命令给出退出代码0

7
如何关闭X Server,以避免在更新nVidia驱动程序时出错?
我试图更新nVidia驱动程序,但是运行驱动程序安装时出现错误。 看到错误: 错误:您似乎正在运行X服务器。请在之前退出X 安装。有关更多详细信息,请参见“安装”部分 Linux驱动程序上的自述文件中的NVIDIA DRIVER 请访问www.nvidia.com下载页面。 注意:我尝试通过输入内容遵循指南,init 3但是仍然没有任何改变。如何关闭X服务器? 这样我就可以更新驱动程序

6
陷阱,ERR和回显错误行
我正在尝试使用陷阱创建一些错误报告,以针对所有错误调用函数: Trap "_func" ERR 是否有可能获得发送ERR信号的线路?外壳是bash。 如果这样做,我可以阅读和报告使用了什么命令,并记录/执行一些操作。 或者,也许我错了吗? 我测试了以下内容: #!/bin/bash trap "ECHO $LINENO" ERR echo hello | grep "asdf" 并$LINENO返回2。不起作用。

5
防止grep在不匹配的情况下退出
该脚本不回显“ after”: #!/bin/bash -e echo "before" echo "anything" | grep e # it would if I searched for 'y' instead echo "after" exit 如果我删除了-eshebang行上的选项,也可以,但是我希望保留它,以便在出现错误时脚本停止。我不认为grep发现没有匹配项是错误。如何防止它过分退出?

2
在哪里可以找到“ make”错误代码列表?
我正在尝试使用make(我有一个Makefile,并且在包含Makefile的目录中键入命令$ make target,其中“ target”是我的Makefile中存在的系统特定的目标规范)编译用Fortran编写的程序。在尝试对目标规范进行各种修订时,尝试调用时经常会收到各种错误消息,下面make举几个例子: make[1]: Entering directory /bin/sh: line 0: test: too many arguments ./dpp angfrc.f > angfrc.tmp.f /bin/sh: ./dpp: Permission denied make[1]: *** [angfrc.o] Error 126 make[1]: Leaving directory make: *** [cmu60] Error 2 和 make[1]: Entering directory /bin/sh: line 0: test: too many arguments ./dpp -DSTRESS -DMPI -P …

2
如何检查curl等命令是否正确完成?
我正在使用curl通过HTTP发布将文件上传到服务器。 curl -X POST -d@myfile.txt server-URL 当我在命令行上手动执行此命令时,我从服务器收到响应,如"Upload successful"。但是,如何通过脚本执行curl命令,如何确定POST请求是否成功?

6
仅在命令成功的情况下如何抑制输出?
我想通过抑制通常成功的辅助命令的输出来简化脚本的输出。 但是,-q在它们上偶尔使用时,对它们使用会隐藏输出,因此我无法理解该错误。此外,这些命令将其输出记录在上stderr。 是否只有在命令成功的情况下才可以抑制它的输出? 例如(但不限于)这样的东西: mycommand | fingerscrossed 如果一切顺利,则fingerscrossed捕获输出并将其丢弃。否则,它将回显到标准或错误输出(无论如何)。


7
如何检查是否可以在bash中创建文件或将其截断/覆盖?
用户使用文件路径调用我的脚本,该文件路径将在脚本中的某个点被创建或覆盖,例如foo.sh file.txt或foo.sh dir/file.txt。 创建或覆盖行为与将文件放在>输出重定向运算符右侧或将其作为参数传递给tee(实际上,将其作为参数传递给tee我的要求)非常相似。)。 在深入探讨脚本之前,我想进行一次合理的检查,以确定是否可以创建/覆盖文件,但实际上无法创建文件。此检查不一定是完美的,是的,我意识到情况可能会在检查和实际写入文件的位置之间发生变化-但在这里,我可以采用尽力而为的类型的解决方案,因此我可以尽早进行纾困如果文件路径无效。 无法创建文件的原因示例: 该文件包含目录组件,例如dir/file.txt但该目录dir不存在 用户在指定目录中没有写权限(如果未指定目录,则没有CWD 是的,我认识到“预先”检查权限不是UNIX Way™,而是我应该尝试操作并稍后再请求宽恕。但是,在我的特定脚本中,这会导致不良的用户体验,并且我无法更改负责任的组件。

4
如何使bash在语法错误时中止脚本的执行?
为了安全起见,如果脚本遇到语法错误,我希望bash中止脚本的执行。 令我惊讶的是,我无法实现这一目标。(set -e还不够。)示例: #!/bin/bash # Do exit on any error: set -e readonly a=(1 2) # A syntax error is here: if (( "${a[#]}" == 2 )); then echo ok else echo not ok fi echo status $? echo 'Bad: has not aborted execution on syntax error!' 结果(bash-3.2.39或bash-3.2.51): $ ./sh-on-syntax-err …

1
Linux中的标准错误代码是什么?
例如,当我在bash中编写复制文件的代码时,如果文件不存在,则在终端中会看到类似于“找不到文件”的错误,如果未向脚本用户授予权限,则会显示该错误up类似于“权限被拒绝”。 基本上,无论使用哪种编程语言,例如,当您编写代码以复制文件时,所用的编程语言都会要求操作系统(在我的情况下为Linux)执行此操作,如果发生错误,操作系统将以方便的错误(代码+消息)。 我是否可以运行一个命令,该命令将列出系统上的所有标准错误代码?

4
使用流程替换时,如何捕获退出代码/正确处理错误?
我有一个脚本,该脚本使用从SO上的Q&A采取的以下方法将文件名解析为数组: unset ARGS ARGID="1" while IFS= read -r -d $'\0' FILE; do ARGS[ARGID++]="$FILE" done < <(find "$@" -type f -name '*.txt' -print0) 这很好用,可以完美处理所有类型的文件名变体。但是,有时,我会将不存在的文件传递给脚本,例如: $ findscript.sh existingfolder nonexistingfolder find: `nonexistingfile': No such file or directory ... 通常情况下,我会让脚本RET=$?使用类似的代码捕获退出代码,然后使用它来决定如何继续。这似乎不适用于上面的流程替换。 在这种情况下正确的程序是什么?如何捕获返回码?还有其他更合适的方法来确定替换过程中是否出了问题吗?

2
如何使用陷阱命令触发错误
我正在使用Ubuntu 12.04.2。我正在尝试使用“ trap”命令捕获外壳脚本中的异常或错误,但是我也试图手动触发“错误”退出。 我尝试退出1,但不会触发“错误”信号。 #!/bin/bash func() { exit 1 } trap "echo hi" INT TERM ERR func 不确定如何手动触发“错误”退出信号?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.