zoukankan      html  css  js  c++  java
  • awk使用shell变量,shell获取awk中的变量值

    awk中使用shell中的变量

    : "'$var'"

    这种写法大家无需改变用'括起awk程序的习惯,是老外常用的写法.如:

    var="test"
    awk 'BEGIN{print "'$var'"}'

    这种写法其实际是双括号变为单 括号的常量,传递给了awk.

    如果var中含空格,为了shell不把空格作为分格符,便应该如下使用:

    var="this is a test"
    awk 'BEGIN{print "'"$var"'"}'
    : '"$var"'

    这种写法与上一种类似.如果变量含空格,则变为'""$var""'较为可靠.
    : export变量,使用ENVIRON["var"]形式,获取环境变量的值

    例如:
    var="this is a test"; export var;

    awk 'BEGIN{print ENVIRON["var"]}'
    :可以使用awk-v选项 (如果变量个数不多,个人偏 向于这种写法)

    例如:
    var="this is a test"
    awk -v awk_var="$var" 'BEGIN {print awk_var}'

    这样便把系统变量var传递给了awk变量awk_var.

     awkshell变量传递值

    “由awk向shell传递变量”,其思想无非是用awk(sed/perl等也是一样)输出若干条shell命令,然后再用shell去执行这些命令。

    eval $(awk 'BEGIN{print "var1='str1';var2='str2'"}')

    或者eval $(awk '{printf("var1=%s; var2=%s; var3=%s;",$1,$2,$3)}' abc.txt)

    之后可以在当前shell中使用var1,var2等变量了。

    echo "var1=$var1 ----- var2=$var2"

    其中,eval命令用于重新运算求出参数的内容,可读取一连串的参数,然后再依参数本身的特性来执行。例如上述最后就变成了 "eval var1='str1';var2='str2'",其实就是用eval进行赋值了

  • 相关阅读:
    答读者问(10):有关对博客的评价及个人技术发展路线等问题
    EasyUI学习之menu and button(菜单和按钮)
    二分查找
    【Android UI】色板
    很好的理解遗传算法的样例
    关于提高UDP发送效率的方法
    Log4cpp介绍及使用
    四个好看的CSS样式表格
    SpringMVC+easyUI 分页,查询 (完整的CRUD)
    [MODX] 1. Template *
  • 原文地址:https://www.cnblogs.com/fnlingnzb-learner/p/13064784.html
Copyright © 2011-2022 走看看