`

awk 引用shell变量, 变量的作用域

阅读更多

http://blog.sina.com.cn/s/blog_63092e670100r4th.html

1. ''  单引号截断,注意:如果变量的值有空格的话,必须要加双引号""(参见上面的链接),否则空格会导致 cmd空格option空格params

2.ENVRION["varName"]

3.-v传递参数

 

 

GOOD:

http://www.cnblogs.com/chengmo/archive/2010/10/03/1841753.html

 

1. 格式如:awk ‘{action}’  变量名=变量值   ,这样传入变量可以在action中获得值,但不能在BEGIN{}中引用

var1="hahah"

echo |awk 'BEGIN{print "Begin:v1="v1} {print "ActionBody:v1="v1}' v1="$var1"

     输出结果

    Begin:v1=

    ActionBody:v1=hahaha

2.格式如:awk –v 变量名=变量值 [–v 变量2=值2 …] 'BEGIN{action}’  注意:用-v 传入变量可以在3种类型的action 中都可以获得到,但顺序必须要在  action前面。

echo |awk -v v1="haha" 'BEGIN{print "Begin:v1="v1} {print "ActionBody:v1="v1}'

 

 

 

 

格式如:awk ‘{action}’  变量名=变量值   ,这样传入变量,可以在action中获得值。 注意:变量名与值放到’{action}’后面。

[chengmo@localhost ~]$ echo | awk  'BEGIN{print test}' test="$test"         

这种变量在:BEGIN的action不能获得。

awk  -f "query.awk" idnums=10 test.dat

必须要在文件名前面

 

 

格式如:awk –v 变量名=变量值 [–v 变量2=值2 …] 'BEGIN{action}’ 

 

注意:用-v 传入变量可以在3中类型的action 中都可以获得到,但顺序在  action前面。

awk  -v idnums=10 -f "query.awk"  test.dat

 

 

 

 

1.单引号 双引号的区别

 

var1="hello"

 

awk 'script'    => 会把awk scrpit 原封不动的传递给AWK解释器

awk '{print $var1}'   =>ERROR,   $var1是shell变量,无法直接引用

 

awk "script"  => 先把awk script解析成 String 形式的 脚本(包括引用shell变量), 再传递给AWK解释器

awk "{print $var1}"   =>OK,   先把$var1是替换成shell变量的值,解析的结果"print hello" 再传递给AWK解释器

 

 

 

 

awk '{print $SHELL-VAR}'    SHELL-VAR的值来自shell变量

 

测试如下:

 

>index=2

>echo $index  ##输出是2

>echo "a b c d" | awk {'print $index'}   ERROR

 

 

var是shell变量,而awk是Linux中独立于shell的一个工具。在awk中如果要解析shell变量,需要将变量拿到awk的作用域外面来,即,先关闭awk的单引号,引用变量 后再次打开。

摘自 http://zhidao.baidu.com/question/273992965.html

 

>echo "a b c d" | awk {'print $'$index'}'   

 

 

 

 

分享到:
评论

相关推荐

    AWK应用和讲解步骤

    - 在使用 AWK 时,需要注意变量的作用域。 - 对于复杂的逻辑处理,可以考虑使用脚本文件。 - 需要确保 AWK 版本兼容性,不同版本的 AWK 可能存在差异。 以上是关于 AWK 应用和讲解步骤的主要知识点,包括基础语法、...

    高级shell编程.pdf

    - **变量与参数**:理解变量的作用域、类型以及如何进行赋值、替换等操作至关重要。Shell变量通常是无类型的,这意味着它们可以存储不同类型的数据而无需显式声明类型。 - **引用与转义**:正确处理变量引用和特殊...

    awk文本处理工具

    在Linux运维中,awk、sed和grep被称为“文本处理三剑客”,尤其在编写Shell脚本自动化任务时发挥着重要作用。awk可以从标准输入、文件或者其他命令的输出中获取数据,并通过自定义函数和动态正则表达式等功能,支持...

    shell 语法

    在 shell 中,变量可以根据作用域分为几种类型: - **局部变量**:在脚本或命令中定义,仅在当前 shell 实例中有效。 - **环境变量**:所有程序都能访问这些变量,它们在环境中对所有进程可见。 - **shell 变量**:...

    linux shell

    5. **函数和脚本**:学习如何编写Shell脚本,包括函数的定义与调用,以及脚本的执行权限、变量作用域等。 6. **重定向和管道**:了解如何将输出重定向到文件(>`、>>`),输入重定向(),以及使用管道(|)连接...

    shell编程之从零到壹--大神成就之路

    局部变量仅在声明它们的作用域内有效,而全局变量在整个脚本中都可访问。变量的查看和取消使用特定命令进行操作。 6. 表达式 Shell中的表达式包括测试语句、条件表达式和计算表达式。测试语句用于条件测试,条件...

    Shell 脚本专家指南

    4. 函数编写:掌握如何在Shell脚本中定义和调用函数,以及参数传递和局部变量的作用域。 5. 脚本调试和测试:学习使用调试工具和方法对脚本进行错误检测和问题诊断,以及如何编写测试用例确保脚本的稳定性和可靠性...

    Linux与unix shell编程指南

    3. **Shell变量**:包括环境变量(如PATH、HOME)和用户定义变量,如何声明、设置、读取和删除变量,以及特殊变量(如$#、$*、$$等)的用法。 4. **Shell流程控制**:涵盖条件语句(if-else、case)和循环结构(for...

    Shell脚本-珍藏版

    Shell变量的使用、变量引用、双引号和单引号的区别、注释的使用是脚本编写的基础。掌握这些基础之后,学习者可以进行简单的脚本编写。 在字符串处理方面,Shell提供了丰富的操作符,例如使用${}进行字符串操作。...

    shell编程脚本文档

    9. **环境变量与作用域** - **环境变量**:如`PATH`,`HOME`,影响整个Shell会话的变量。 - **局部变量**:只在函数内部或特定代码块中有效的变量。 10. **脚本案例与实战** - **日志管理**:定时清理旧日志,...

    bash 循环中变量作用范围的问题分析

    理解Bash中的变量作用域至关重要,特别是涉及到循环和子shell时。通常,局部变量只在其定义的函数或命令组(如`{...}`)内有效,而全局变量在整个脚本中都可用。在循环中,如果变量未声明为局部变量,则默认为全局...

    常用shell脚本总结

    - **局部变量**:仅在当前作用域内有效,一般在函数内部声明。 3. **条件语句**: - `if...fi`结构用于条件判断,如`if [ condition ]; then commands; fi`。 - `case...esac`结构提供多分支选择,如`case $var ...

    linux-shell编程教程pdf完整版.pdf

    函数部分,则介绍了如何创建和使用shell函数,局部变量的作用域问题,以及不使用局部变量的递归函数。 高级主题部分包括了正则表达式、通配符、子shell、受限shell、进程替换、数组和/dev与/proc的特殊文件系统。...

    Shell脚本专家指南

    - **显示特殊域**至**使用sed过滤行**:涵盖了如何使用awk、expr和sed等工具进行文本处理,包括域提取、模式匹配、字符串操作等。 #### 第25章 在适当的位置编辑文件 - **使用ed进行简单的查找和替换**:介绍了如何...

    Linux与UNIX Shell编程指南

    Shell脚本编程是本书的重点,它涵盖了脚本的结构、变量作用域、参数传递、调试技巧等内容。通过编写脚本,用户可以自动化日常的重复任务,比如定期备份、日志分析等。同时,本书还会介绍一些高级主题,如陷阱(traps...

    shell编程和unix命令(21-30章)

    "025第五部分高级shell编程技巧:深入讨论.PDF"可能包含更复杂的主题,如函数、条件表达式、循环、流程控制(if-else、for、while等),以及函数和脚本之间的变量作用域。 "026shell 工具.PDF"可能介绍了各种Unix/...

    《LINUX与UNIX SHELL编程指南》

    理解变量的作用域和生命周期对于编写健壮的脚本至关重要。 接着,深入探讨控制结构,如if...else条件语句用于根据不同的条件执行不同的代码块,while和for循环则用于重复执行任务。学会如何有效地使用这些控制结构...

    shell-编程入门教程详细版

    - **局部变量**:理解函数内部的变量作用域,避免全局变量污染。 5. 文件和目录操作 - **文件操作**:掌握创建、删除、移动和复制文件的命令,如`touch`、`rm`、`mv`、`cp`。 - **目录操作**:学习`mkdir`、`...

    部分linux脚本

    首先,`shell变量比较.odt`很可能是一个关于Shell变量比较的文档,可能包含了如何声明、赋值以及比较不同类型的Shell变量,如局部变量、环境变量和出口变量。在Shell脚本中,理解变量的生命周期和作用域对于编写高效...

    LINUX与UNIX Shell编程指南16-30.rar

    6. **深入讨论**(025深入讨论.pdf):这部分可能涉及了更高级的主题,如管道(pipe)、重定向(redirect)、子Shell、变量作用域、环境变量以及错误处理等,这些都是编写复杂脚本时需要理解的关键概念。 7. **运行...

Global site tag (gtag.js) - Google Analytics