ForDisabusing 发表于 2018-12-1 17:08:03

shell变量拼接失败,拼接结果是覆盖

Linux shell中字符串拼接,代码如下

#!/bin/bash

realt=`cat /opt/1.txt | grep "Realtime" | awk -F ' ' '{print $NF}'`
native=`cat /opt/1.txt | grep "Native Heap:" | awk -F ' ' '{print $NF}'`
gpumsg=`cat /opt/1.txt | grep "Graphics:" | awk -F ' ' '{print $NF}'`

resu=$realt","$native","$gpumsg
echo $resu

期望结果:22753748,114840,848

实际结果:,8488408

tips:后面的值把前面的值覆盖了,不知道什么情况,求解




LinuxAndPython 发表于 2018-12-4 14:20:07

应该把你1.txt文件内容发出来

ForDisabusing 发表于 2018-12-5 14:17:41

LinuxAndPython 发表于 2018-12-4 14:20
应该把你1.txt文件内容发出来

1.txt我作为附件上传了

LinuxAndPython 发表于 2018-12-5 15:33:01

不需要grep这个命令,grep命令是匹配你引号的字符也就是Realtime而已,我给你第一条匹配的命令, 你看下吧
cat 1.txt | awk NR==2 | awk -F ':' '{print $3}'


潇湘慕风 发表于 2018-12-11 11:19:46

我跑出来的结果是正常的
test@hostname#more test.sh
#!/bin/bash

realt=`cat ./1.txt | grep "Realtime" | awk -F ' ' '{print $NF}'`
native=`cat ./1.txt | grep "Native Heap:" | awk -F ' ' '{print $NF}'`
gpumsg=`cat ./1.txt | grep "Graphics:" | awk -F ' ' '{print $NF}'`

resu=$realt","$native","$gpumsg

echo $resu
test@hostname#sh test.sh
22753748,114840,848

ForDisabusing 发表于 2018-12-12 10:00:25

LinuxAndPython 发表于 2018-12-5 15:33
不需要grep这个命令,grep命令是匹配你引号的字符也就是Realtime而已,我给你第一条匹配的命令, 你看下吧
...

确实用NR效率高,就是怕每次抓的日志行不固定,所以选择了grep

ForDisabusing 发表于 2018-12-12 10:02:12

潇湘慕风 发表于 2018-12-11 11:19
我跑出来的结果是正常的
test@hostname#more test.sh
#!/bin/bash


嗯,3q,找到问题了,文件格式的问题,需要先执行dos2unix把文件格式转换一下
页: [1]
查看完整版本: shell变量拼接失败,拼接结果是覆盖