在awk中使用shell命令不起作用

时间:2013-10-21 16:34:28

标签: shell awk

我在shell中有以下代码。

它不起作用。所以我不知道我的错误是什么,我想知道是否有人可以帮助我

echo $i | awk -F "," '{if(NF == 1) print "Exiting..." system("exit")}'

所以$i是一个参数,例如hi,hello。如果字段数等于1,我希望程序退出。

2 个答案:

答案 0 :(得分:3)

awk无法强制其父进程退出,但您可以重构代码以便调用shell退出。

在这种有限的背景下,你根本不需要Awk。

case $i in
  *,* ) ;; # nothing
  * ) echo Exiting... >&2; exit 1;;
esac

答案 1 :(得分:2)

您无法通过系统调用exit,因为awk是在单独的进程中执行的。但是,您可以使用指定的错误代码调用awk的exit,然后根据错误代码退出脚本。例如:

awk -F "," '{if(NF==1){ print "Exiting"; exit -1}}' || exit