LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3084|回复: 18

请问如何将awk中一个变量的值传递给shell中的变量

[复制链接]
发表于 2003-5-31 23:23:22 | 显示全部楼层 |阅读模式
如下
#!/bin/sh
MYVAR=0
awk 'BEGIN{num=1;print num}'|read MYVAR
echo $MYVAR
我的目的就是能够在shell脚本awk语句外的其他地方能够得到 num的值
我试过以下的方法
#!/bin/sh
MYVAR=0
awk 'BEGIN{num=1;print num|"read MYVAR"}'
echo $MYVAR
都不行,
而下面这种方法不实用
MYVAR=awk 'BEGIN{num=1;print num}'
因为如果还print了别的东西就不对了
发表于 2003-6-1 09:42:49 | 显示全部楼层
 楼主| 发表于 2003-6-1 15:42:48 | 显示全部楼层
你所说的是将shell种的变量值传递给awk
而我问的是如何将awk中的之传递给shell中的变量?
thank you
发表于 2003-6-1 15:49:31 | 显示全部楼层
反之亦然,看一下man awk吧,那条语句实际上是定义一对相互沟通的变量。
 楼主| 发表于 2003-6-1 16:27:25 | 显示全部楼层
我实在不知道怎样反之亦然,也许对你很简单的
,看了一下man 也没看明白,
你说的定义了一对互相沟通的变量,
难道说是awk中队给变量的改变,shell中所对应的值也发生改变?
可是我做实验觉得只是一个简单的单向从shell向awk变量赋值,
实在不明白,还希望斑竹明示,能不能举个例子,
发表于 2003-6-1 16:52:03 | 显示全部楼层
MYVAR=awk 'BEGIN{num=1;print num}'
这样是不是可以呢?
MYVAR=$(awk 'BEGIN{num=1;print num}')
echo $MYVAR
 楼主| 发表于 2003-6-1 17:15:34 | 显示全部楼层
如果用这种方法,感觉不实用,因为
这样就不能print别的东西了,
发表于 2003-6-1 18:30:45 | 显示全部楼层
yhzz:是我错了,对不起。
查了一下资料,没找到awk如何向外传递变量的方法,通常这种情况是可以想方法避免的,万一不行,可利用awk强大的输出功能,你可将多个变量值格式化输出,然后再对输出的值进行分析,分离提取需要的变量值;也可以分多次输出。
 楼主| 发表于 2003-6-1 20:36:17 | 显示全部楼层
多谢各位指教,以后还要麻烦各位了,嘿嘿
我还有一些疑惑的地方,就是在shell中无法做以下的匹配
例如:str=haha  与文件中读入的这样一行"hahafefe"进行匹配,
所以只能采用awk或sed, 所以也就只有通过临时文件,或者从定向来做信息的传递和交换了。是这样吧!
发表于 2003-6-1 20:45:11 | 显示全部楼层
$str=haha
$echo ${str}hehe
hahahehe
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表