我正在使用savscan命令,但当检测到恶意软件时,返回3而不是1,如果检测到恶意软件,则需要获取1,我尝试了以下操作:

$ bash -c "savscan -f -archive infectedfile.exe && if [ $? -eq 3 ]; then exit 1 ; fi"
$ echo $?
$ 0
$ bash -c "savscan -f -archive infectedfile.exe ; if [ $? -eq 3 ]; then exit 1 ; fi"
$ echo $?
$ 0

但我仍然得到退出代码0,我还需要运行在一行的一切

最佳答案

就我个人而言,我会使用函数包装器:

savscan() {
  local retval
  command savscan "$@"; retval=$?
  (( retval == 3 )) && retval=1
  return "$retval"
}

savscan -f -archive infectedfile.exe

…添加更多关于如何改变出口状态的规则就像添加额外的命令检查和修改retval一样简单,如你所见。
如果出于某种原因,您坚持在一行中定义和调用此函数,则可能如下所示:
savscan() { local retval; command savscan "$@"; retval=$?; (( retval == 3 )) && retval=1; return "$retval"; }; savscan -f -archive infectedfile.exe

关于linux - 使用Bash在一行上更改退出代码?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58001646/

10-12 23:38