利用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为空。
请教高人以上代码错在哪里 展开
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为空。
请教高人以上代码错在哪里 展开
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 中的值,有两个选择:
将这个值写入一个文件,在后续的 shell 脚本中读取这个文件内容;
生成一段 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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#!/bin/sh
ping ip -c 3 > log.txt
x=`awk 'NR==7 {print $6}' log.txt`
echo $x
希望对你有帮助。 我已经试过了。
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、]与; 之间不能有空格
希望对你有帮助。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
x=$(ping 127.0.0.1 -c 3 | grep -oP "([0-9]*)%")
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询