Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2039909
  • 博文数量: 470
  • 博客积分: 10206
  • 博客等级: 上将
  • 技术积分: 5620
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-03 12:50
文章分类

全部博文(470)

文章存档

2012年(1)

2011年(18)

2010年(47)

2009年(404)

分类:

2009-08-03 11:04:32

[] [] [] [] []

新手




CU编号: 2023743
注册:2009-7-2
最后登录: 2009-07-31
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-7-31 16:32 

菜鸟的问题:

echo 123 | awk '{print $0}' 输出是 123

echo 123 | awk "{print $0}"输出是 0, 这个0怎么来的?
这个命令等同于 echo 123 | awk \{print\ $0\},就是说传给print的值为$0的值,而$0的值怎么是0呢?
如果用 echo $0, 输出是“-bash”



您对本贴的看法:
| | |
  帅哥 (一阵风)
精灵王



CU编号: 313385
注册:2005-9-14
最后登录: 2009-07-31
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-7-31 16:46 

回复 #1 Kill_Hand 的帖子

echo 123 |awk "{print \$0}"  这样就0k了

因为双引号会翻译print 里的$

[root@ha1 ~]# echo $0
-bash
[root@ha1 ~]echo 123 |awk "{print -bash}"  
0

这样你就明白了吧。



您对本贴的看法:
| | |
  帅哥 (十页)
骑士



CU编号: 482996
注册:2006-10-30
最后登录: 2009-08-03
帖子:
精华:0







状态:...保密...

[] [] [博客]


[]     顶部
发表于 2009-7-31 16:50 

echo 123 | awk "{print $0}" => echo 123 | awk "{print -bash}"

awk把-bash解释成减号加bash,这样输出全是0啦



您对本贴的看法:

__________________________________

This small part of my life is called happiness
| | |

新手




CU编号: 2023743
注册:2009-7-2
最后登录: 2009-07-31
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-7-31 16:52 

回复 #2 chenwenming 的帖子

恩 多谢
但是 awk "{print -bash}" 为什么输出是 0 涅?



您对本贴的看法:
| | |
  帅哥
天使



CU编号: 75493
注册:2003-7-25
最后登录: 2009-08-03
帖子:
精华:0







来自:Hangzhou
状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-7-31 16:54 

回复 #4 Kill_Hand 的帖子

因为awk变量bash不存在,经过算术运算时不存在的awk变量默认会被处理成0



您对本贴的看法:
| | |

新手




CU编号: 2023743
注册:2009-7-2
最后登录: 2009-07-31
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-7-31 17:00 

回复 #5 Minsic 的帖子

哦 了解, 多谢了。



您对本贴的看法:
| | |

骑士



CU编号: 755490
注册:2008-9-1
最后登录: 2009-08-02
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-7-31 17:35 

三楼的说的啥意思呀?

QUOTE:
原帖由 deepalley 于 2009-7-31 16:50 发表
awk把-bash解释成减号加bash,这样输出全是0啦

[root@www ~]# echo 123|awk "{print -}"
awk: {print -}
awk:         ^ syntax error
-bash: echo: write error: 断开的管道
[root@www ~]# echo 123|awk "{print bash}"

[root@www ~]# echo 123|awk "{print -bash}"
0


我也疑惑了。 - 不算变量 。
bash算是变量为啥输出为空了。
-bash这样就算是变量了吗?



您对本贴的看法:

__________________________________

志向,催使我们不懈努力。
| | |
  帅哥
天使



CU编号: 75493
注册:2003-7-25
最后登录: 2009-08-03
帖子:
精华:0







来自:Hangzhou
状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-7-31 17:48 

回复 #7 finechore 的帖子

无论有没有"-",bash都是变量,只不过是awk变量, 不是shell的,因为awk变量没有类型一说,awk会根据上下文来自动判断该变量是字符串还是数字,所以如果一个awk变量没有定义就直接打印,它就 被初始化为空值,打印空值;如果参加算术运算,那就会被初始化为0。



您对本贴的看法:
| | |

大天使



CU编号: 347943
注册:2005-12-11
最后登录: 2009-08-03
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-7-31 17:54 

-表示负号,也是数学运算的一种,参与数学运算的变量会被awk自动转换为数字,-bash因bash变量为空就等价于-0,也就是0

#echo 555aaa | awk '{print -$0}'
-555

[ 本帖最后由 ywlscpl 于 2009-7-31 17:59 编辑 ]



您对本贴的看法:

__________________________________

shell新手&&awk新手
http://blog.chinaunix.net/u3/91453/


| | |
  帅哥
精灵



CU编号: 157302
注册:2004-5-11
最后登录: 2009-08-03
帖子:
精华:







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-1 08:16 

学习了。



您对本贴的看法:

__________________________________

天涯何处不归乡
| | |
阅读(3001) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~