Изменить код выхода в одной строке, используя Bash? - PullRequest
0 голосов
/ 19 сентября 2019

Я использую команду 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, мне также нужно запустить все в одну строку

1 Ответ

1 голос
/ 19 сентября 2019

Лично я бы использовал для этого функцию-обертку:

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

savscan -f -archive infectedfile.exe

... так как добавление дополнительных правил о том, как изменить статус выхода, так же просто, как добавление дополнительных команд для проверки и изменения * 1004.*, как вы считаете нужным.

Если вы по какой-то причине настаиваете на определении и вызове этой функции в одной строке, это может выглядеть следующим образом:

savscan() { local retval; command savscan "$@"; retval=$?; (( retval == 3 )) && retval=1; return "$retval"; }; savscan -f -archive infectedfile.exe
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...