Chinaunix

标题: awk嵌套的shell [打印本页]

作者: jieao111    时间: 2009-10-14 14:58
标题: awk嵌套的shell
#!bin/bash
java -version 2>&1|awk -F'"' 'NR==1{split($2,a,".");if(a[2]<5){ print "your java version is too low";system("exit 1");}}'
echo hello world


#!bin/bash
java -version 2>&1|awk -F'"' 'NR==1{split($2,a,".");if(a[2]<5)print "your java version is too low";}'
exit 1
echo hello world
不同

exit的位置
作者: jieao111    时间: 2009-10-14 14:59
第一个不能退出脚本,就是说继续echo helloworld
第一个退出了脚本
作者: Minsic    时间: 2009-10-14 15:16
[oracle@Minerva practice]$ echo $$
14258
[oracle@Minerva practice]$ awk 'BEGIN{system("echo $$")}'
17904
[oracle@Minerva practice]$


说明awk的system函数是一个全新的进程来跑的
作者: jieao111    时间: 2009-10-14 15:21
标题: 回复 #3 Minsic 的帖子
有什么解决的方法吗,如果我要退出整个脚本的话
作者: ly5066113    时间: 2009-10-14 15:27
标题: 回复 #4 jieao111 的帖子
  1. #! /bin/bash

  2. java -version 2>&1 | awk -F '[".]' 'NR==1&&$3<5{exit 1}'
  3. if [ $? -eq 1 ]
  4. then
  5.     echo "your java version is too low"
  6.     exit
  7. fi

  8. echo hello world
复制代码

作者: ywlscpl    时间: 2009-10-14 15:34
不一定非得在awk里实现退出脚本

flag=`java -version 2>&1|awk -F'"' 'NR==1{split($2,a,".");if(a[2]<5)print "xx"}'`
[ "$flag" == "xx" ] && echo "your java version is too low" && exit 1
echo hello world
作者: ywlscpl    时间: 2009-10-14 15:38
http://bbs2.chinaunix.net/thread-1596080-1-1.html

试试
java -version 2>&1|awk -F'"' -v pid=$$ 'NR==1{split($2,a,".");if(a[2]<5){ print "your java version is too low";system("kill -9 "pid);}}'
echo hello world




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2