利用awk赋值

#!/bin/shpingip-c3>log.txtawk'NR==7{if($6=="0%")x=$6}'myfileecho$x代码意图:将pingip的内容保存为l... #!/bin/sh

ping ip -c 3 > log.txt

awk 'NR==7 {if($6=="0%") x=$6}' myfile
echo $x
代码意图:
将ping ip的内容保存为log.txt,利用AWK命令将第七行的域6提取出来判断是否为0%并将值赋给变量x。
但实际运行得x为空。
请教高人以上代码错在哪里
展开
 我来答
鲁步友卉2k
2013-10-10 · TA获得超过149个赞
知道小有建树答主
回答量:100
采纳率:0%
帮助的人:72.3万
展开全部

因为 awk 脚本中的变量和 shell 变量不是一回事。

这里有段指令可以解释这个问题:

  ping 192.168.2.8 -c 3 | awk 'NR==7 { print $6; X=$6; print "X.awk = ", X }' ; echo "X.shell = $X"

所以,如果你希望在后面的 shell 脚本中使用某个 awk 中的值,有两个选择:

  1. 将这个值写入一个文件,在后续的 shell 脚本中读取这个文件内容;

  2. 生成一段 shell 脚本(字符串或文件),然后在 shell 中执行它。

针对于当前这个取丢包率的问题,你可以直接:

  X=$(pint 192.168.2.8 -c 3 | awk 'NR==7{print $6}')

  echo "X=[$X]"

  if [ “$X" = "0%" ]; then echo OK; else echo oh NO; fi

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sunguangshou
2013-10-10 · TA获得超过151个赞
知道小有建树答主
回答量:149
采纳率:0%
帮助的人:80.8万
展开全部
#!/bin/sh

ping ip -c 3 > log.txt

x=`awk 'NR==7 {print $6}' log.txt`
echo $x

希望对你有帮助。 我已经试过了。
追问
请问能否用 “$x" == "0%" 来进行判定?
追答
if [ $x=="0%" ]; then
echo "11111111111"
fi

1、if 与[ 之间必须有空格

2、[ ]与判断条件之间也必须有空格

3、]与; 之间不能有空格

希望对你有帮助。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小米飞猫
2013-10-10 · 专注于IT监控领域技术
小米飞猫
采纳数:1653 获赞数:4811

向TA提问 私信TA
展开全部
x=$(ping 127.0.0.1 -c 3 | grep -oP "([0-9]*)%")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式