Можно ли заставить awk выйти из скрипта bash с `exit 2`? - PullRequest
0 голосов
/ 25 мая 2018

В зависимости от некоторых условий внутри скрипта awk, мне нужно получить код выхода из скрипта awk и передать его скрипту bash, чтобы он мог выйти, например, с помощью exit 2.

Если я позвонюsystem("exit 2") из awk, тогда bash-скрипт все еще завершается с 0.

Вопрос

Любые идеи, как я могу получить значение $code из awkк сценарию bash?

#!/usr/bin/bash

# ...

awk '{
  # ...
  code=2
  # ...
}' /proc/loadavg

exit $code

Ответы [ 3 ]

0 голосов
/ 25 мая 2018
awk '{
       # ...
       # default value of code will be 0, no need to declare...
       # if something went wrong set
       code=2
       # if you need to terminate, uncomment next line
       # exit
       # otherwise processing will continue
       # ensure you don't overwrite code
     }
 END {exit code}
' /proc/loadavg
0 голосов
/ 25 мая 2018
$ cat foo.sh
#!/bin/bash

exit $(awk 'END{code=2; exit code}' file)
$ bash foo.sh
$ echo $?
2
0 голосов
/ 25 мая 2018

Вот пример сценария оболочки:

awk -v code="2" 'BEGIN{exit code}'
shell_code=$?
echo $shell_code #just for seeing the code
exit $shell_code

Приведенный выше сценарий оболочки завершится 2, значение в переменной awk code

Однострочная строка awk может быть с вводомфайл тоже, например:

awk 'BEGIN{code=2} {if (something happens) exit code}' file

Однако я думаю, вы можете позволить awk выводить некоторое значение вместо exiting значения.Затем назначьте этот вывод awk переменной оболочки.В своем сценарии оболочки вы можете решить, хотите ли вы выйти из сценария оболочки с каким значением, вплоть до вывода на awk.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...