免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8369 | 回复: 11

awk调用系统命令参数传递的问题 [复制链接]

论坛徽章:
0
发表于 2010-07-30 18:52 |显示全部楼层
我希望在在awk里读取test1.txt里的每一行作为touch 命令的参数,通过awk调用系统命令执行
touch test1;
touch test2
[root@localhost exp]# cat test.txt
test1
test2
可是我不知道怎么讲h1参数传递到系统命令中去

[root@localhost exp]# awk '{hl=$1;while("touch h1"|getline){next}}' test.txt
这样只touch了一个h1

[root@localhost exp]# awk '{hl=$1;while("touch "h1""|getline){next}}' test.txt
awk: cmd. line:1: (FILENAME=test.txt FNR=1) fatal: expression for `|' redirection has null string value

请帮忙看看应该怎么写

论坛徽章:
0
发表于 2010-07-30 19:02 |显示全部楼层
awk '{system("touch "$0)}' test.txt

论坛徽章:
0
发表于 2010-07-31 01:33 |显示全部楼层
回复 1# jiajuzh

只用shell,不用awk,可以吗?   

while read FN; do
touch $FN
done < test.txt

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
发表于 2010-07-31 08:08 |显示全部楼层
不懂帮顶了

论坛徽章:
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
发表于 2010-07-31 08:57 |显示全部楼层
cat test.txt | xargs touch

论坛徽章:
0
发表于 2010-07-31 09:18 |显示全部楼层
getline的哪个方法错在什么地方,有能给指正一下的吗

论坛徽章:
0
发表于 2010-07-31 10:43 |显示全部楼层
awk '{print "touch "$1}' aa|sh

论坛徽章:
0
发表于 2010-07-31 11:59 |显示全部楼层
再次说明一下,我是想弄清楚awk调用系统命令参数传递的方法,而不是为了实现一个touch文件的结果,二楼兄弟的方法很简洁很好,但是我在测试的时候发先不能使用$0,不知道为什么.如果诸位有明白getline那个写法的问题,请继续回贴,谢谢

论坛徽章:
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
发表于 2010-07-31 12:45 |显示全部楼层
为什么菜刀不能拧螺丝,因为它是用来切菜的。
如果一定要这么干:
awk '{cmd="touch "$1;cmd|getline}' test.txt

论坛徽章:
0
发表于 2010-08-02 11:41 |显示全部楼层
本帖最后由 jiajuzh 于 2010-08-02 11:50 编辑

希望awk在执行系统命令时在屏幕上打印系统命令执行的结果,测试如下
[root@localhost exp]# cat info.txt
10.1.1.140   140 test140
10.1.1.148   148 test148
[root@localhost exp]# cat test.sh
echo $1 $2 $3
[root@localhost exp]# awk '{cmd="./test.sh "$1" "$2" "$3;cmd|& getline var;print var}'  info.txt
10.1.1.140 140 test140
10.1.1.148 148 test148

输出正常


但是我调用expect执行的时候却不能得到正常输出
[root@localhost exp]# cat info.txt
10.1.1.140   140 test140
10.1.1.148   148 test148

[root@localhost exp]# cat manager.exp
#!/usr/bin/expect -f
set ip [lindex $argv 0]
set OLDPASSWORD [lindex $argv 1]
set NEWPASSWORD [lindex $argv 2]
set timeout 30
set username test
spawn ssh test@$ip
expect {
"yes/no" { send "yes\r";exp_continue }
"password:" { send "$OLDPASSWORD\r" }
}
expect "$"
send "passwd\r"
expect  "current"
send "$OLDPASSWORD\r"
expect "New"
send "$NEWPASSWORD\r"
expect "Retype"
send "$NEWPASSWORD\r"
expect "successful"
send "exit\r

[root@localhost exp]# awk '{cmd="./manager.exp "$1" "$2" "$3;cmd|& getline var;print var}'  info.txt
spawn ssh test@10.1.1.140
spawn ssh test@10.1.1.148



单独执行./manager.exp 10.1.1.140   140 test140 是正常的

我希望执行awk '{cmd="./manager.exp "$1" "$2" "$3;cmd|& getline var;print var}'  info.txt的时候将manager.exp执行的过程全在屏幕上打印出来,请教应该怎么写
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2021中国系统架构师大会

【数字转型 架构重塑】2021年5月20日-22日第十三届中国系统架构师大会将在云端进行网络直播。

大会为期3天的议程,涉及20+专场,近120个主题,完整迁移到线上进行网络直播对会议组织来说绝非易事;但考虑到云端会议的直播形式可以实现全国各地技术爱好者的参与,也使ITPUB作为技术共享交流平台得到更好的普及,我们决定迎难而上。
http://sacc.it168.com/


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP