可以让awk退出一个带有`exit 2`的bash脚本吗?

San*_*ing -1 linux bash awk

根据awk脚本中的某些条件,我需要从awk脚本中获取退出代码并将其传递给bash脚本,因此它可以退出例如exit 2.

如果我system("exit 2")从awk 调用,那么bash脚本仍会退出0.

有什么想法我如何$code从awk到bash脚本获得价值?

#!/usr/bin/bash

# ...

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

exit $code
Run Code Online (Sandbox Code Playgroud)

Ken*_*ent 5

这是一个示例shell脚本:

awk -v code="2" 'BEGIN{exit code}'
shell_code=$?
echo $shell_code #just for seeing the code
exit $shell_code
Run Code Online (Sandbox Code Playgroud)

上面的shell脚本将退出2,即awk变量中的值 code

awk单行也可以用输入文件,例如:

awk 'BEGIN{code=2} {if (something happens) exit code}' file
Run Code Online (Sandbox Code Playgroud)

但是我认为你可以让awk输出一些值而不是exiting值.然后将此awk输出分配给shell变量.您可以在shell脚本中决定是否要退出具有哪个值的shell脚本,直到awk输出.

  • 需要明确的是,exit语句不仅仅是退出._**exit`**语句将按照它们在程序源中出现的顺序调用所有**`END`**动作,然后在不读取其他输入的情况下终止程序.`END`动作中的退出语句应终止程序而不进一步执行`END`动作.**如果在`exit`语句中指定了表达式,则其数值应为awk的退出状态,除非遇到后续错误或执行带有表达式的后续exit语句.**_ (3认同)