怎么使%MEM是普通字符
时间: 2024-03-18 18:41:20 浏览: 24
如果你想在while循环中保留"%MEM"作为普通字符,你可以使用IFS(Internal Field Separator)变量来改变分隔符。默认情况下,IFS包含空格、制表符和换行符,用于将输入行分解为单词。你可以将IFS设置为一个不常见的字符来避免字符串被分解。比如,你可以将IFS设置为"#",然后在awk命令中使用"#"作为字段分隔符,这样就可以将"%MEM"作为一个整体保留下来了。修改后的代码如下:
```bash
#!/bin/bash
sum=0
IFS='#' # 将IFS设置为#符号
while read line
do
mem=$(echo $line | awk -F'#' '{print $4}') # 使用#作为字段分隔符
sum=$(echo "$mem+$sum" | bc)
done < nowcoder.txt
echo $sum
exit 0
```
这个脚本中,我们将IFS设置为"#",然后在while循环中使用read命令读取输入行。由于IFS被设置为"#",read命令会将整行作为一个单词读入到变量line中。在awk命令中,我们使用-F选项将字段分隔符设置为"#",然后提取第四个字段(即"%MEM"所在的字段),并将其加入sum中。最后,我们将IFS重置为默认值,以免影响后续命令的执行。
相关问题
nmon 采集%MEM数据
nmon 是一个性能监控工具,可以用来实时监测系统的各种指标。要采集%MEM数据,可以在 nmon 的主界面按“m”键,即可进入 Memory 页面,其中包括了系统内存的使用情况,包括总内存、空闲内存、缓存和缓冲区、交换分区等信息,其中也包括了%MEM的使用情况。你可以通过按“t”键将数据以时间序列的形式输出到文件中,然后使用其他工具进行分析和可视化。
#!/bin/bash sum=0 #注意第一行为%MEM字符串 while read line in $(awk '{print $4}' nowcoder.txt) do [ $line != "%MEM" ] && sum=$(echo "$line+$sum" | bc) done echo $sum exit 0 line 4: read: `%MEM': not a valid identifier
这个错误是因为在while read line语句中,read会将输入行分解为单词,并将其分配给变量line。而在这个例子中,awk输出的第一行是字符串"%MEM",它包含了一个非法变量名字符"%", 因此read无法将其分配给变量line,从而报错。
为了避免这个问题,你可以在while循环中添加一个过滤条件来跳过第一行,比如这样:
```bash
#!/bin/bash
sum=0
while read line
do
if [[ $line != "%MEM"* ]]; then
mem=$(echo $line | awk '{print $4}')
sum=$(echo "$mem+$sum" | bc)
fi
done < nowcoder.txt
echo $sum
exit 0
```
这个脚本中,我们使用if语句来判断读入的行是否以"%MEM"开头。如果不是,则使用awk提取第四个字段(即内存占用百分比),并将其加入sum中。注意,我们将文件名作为输入重定向到while循环中,这样就可以避免第一行被read命令误解为变量名了。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)