免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4566 | 回复: 15
打印 上一主题 下一主题

[求助]eavl awk 传出的参数个数是否有限制? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-17 11:22 |只看该作者 |倒序浏览
10可用积分

  1. #cat Configure_file.txt

  2. record=1

  3. Configure[1]
  4. scour_path=/home/stqiujundong/
  5. file_name=realbill_ora_st
  6. oracle_connect=infoquery/infoquery@BSM
  7. in_talbe=tmp1
  8. table_col=A|B

  9. Configure[2]


  10. Configure[3]
复制代码




  1. # cat Configure_read.awk

  2. BEGIN{
  3. FS="="
  4. }
  5. {if($1==a){
  6.         getline
  7.         if(/scour_path/){
  8.                 scour_path1=$2
  9.                 getline
  10.                 if(/oracle_connect/){
  11.                         oracle_connect1=$2
  12.                         getline
  13.                         if(/file_name/){
  14.                                 file_name1=$2
  15.                                 getline
  16.                                 if(/in_talbe/){
  17.                                         in_talbe1=$2
  18.                                         getline
  19.                                         if(/table_col/){
  20.                                                 table_col1=$2
  21.                                                 {print "scour_path="scour_path1 "file_name="file_name1 "oracle_connect="oracle_connect1 "in_talbe="in_talbe1 "table_col="table_col1}
  22.                                         }
  23.                                 }
  24.                         }
  25.                 }
  26.         }
  27. }
  28. }

复制代码



  1. #echo $string

  2. Configure[1]

  3. eval $(awk -f Configure_read.awk -v a="$string" $Configure_file)


  4. # echo $scour_path
  5. /home/stqiujundong/

  6. # echo $table_col


复制代码


前4个参数都传递出来了,为什么第5个读不到值?

最佳答案

查看完整内容

shell赋值是作为一个word出现的,如两个赋值就要两个word——x=a y=b, 而不是一个word——x=ay=b.[ 本帖最后由 blackold 于 2009-9-17 12:04 编辑 ]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
2 [报告]
发表于 2009-09-17 11:22 |只看该作者
shell赋值是作为一个word出现的,如两个赋值就要两个word——x=a y=b, 而不是一个word——x=ay=b.

[ 本帖最后由 blackold 于 2009-9-17 12:04 编辑 ]

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
3 [报告]
发表于 2009-09-17 11:27 |只看该作者

回复 #1 sthcf 的帖子

Configure_file.txt 里改一下:

table_col="A|B"

论坛徽章:
0
4 [报告]
发表于 2009-09-17 11:32 |只看该作者
原帖由 ly5066113 于 2009-9-17 11:27 发表
Configure_file.txt 里改一下:

table_col="A|B"



为什么?

测试了一下,还是不行哦

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
5 [报告]
发表于 2009-09-17 11:42 |只看该作者

回复 #3 sthcf 的帖子

$ table_col=A|B
-bash: B: command not found
$ echo $table_col

$ table_col="A|B"
$ echo $table_col
A|B

|是特殊字符,table_col=A|B相当于
{ table_col=A; } | B

论坛徽章:
0
6 [报告]
发表于 2009-09-17 11:44 |只看该作者
原帖由 ly5066113 于 2009-9-17 11:27 发表
Configure_file.txt 里改一下:

table_col="A|B"


我把参数改为4个,直接把第5个table_col不要了,发现只有前三个参数有值,第四个参数in_table又读不到值了

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
7 [报告]
发表于 2009-09-17 11:47 |只看该作者

回复 #5 sthcf 的帖子

程序的本身的逻辑不对。

论坛徽章:
0
8 [报告]
发表于 2009-09-17 11:53 |只看该作者
原帖由 blackold 于 2009-9-17 11:47 发表
程序的本身的逻辑不对。


  1. if(/file_name/){
  2.                         file_name1=$2
  3.                         getline
  4.                         if(/oracle_connect/){
  5.                                 oracle_connect1=$2
复制代码


倒过来了,晕掉了,谢谢TIM跟黑哥 哈哈

论坛徽章:
0
9 [报告]
发表于 2009-09-17 11:59 |只看该作者
# eval $(awk -f Configure_read.awk -v a="$string" $Configure_file)
++ awk -f Configure_read.awk -v 'a=Configure[1]' /home/hcf/Configure_file.txt
+ eval scour_path=/home/stqiujundong/file_name=realbill_ora_storacle_connect=infoquery/infoquery@BSMin_table=tmp1table_col=A,B
++ scour_path=/home/stqiujundong/file_name=realbill_ora_storacle_connect=infoquery/infoquery@BSMin_table=tmp1table_col=A,B


但是echo 的时候 in_table   /  table_col
这两个值出不来?

论坛徽章:
0
10 [报告]
发表于 2009-09-17 12:08 |只看该作者
原帖由 blackold 于 2009-9-17 12:03 发表
shell赋值是作为一个word出现的,如两个赋值就要两个word——x=a y=b, 而不是一个word——x=ay=b.


{print "scour_path="scour_path1 "file_name="file_name1 "oracle_connect="oracle_connect1 "in_talbe="in_talbe1 "table_col="table_col1}


但是每个中间都有空格的呀
黑哥是指这个吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP