让【宝码香车】来帮您解答,本回答参考DeepSeek编写,并整理提供。
如果答案能帮助您,请采纳,非常感谢!
.
每日一句正能量,让它带给您好心情:别让别人的评价,左右你的人生,你才是自己的主角。
.
根据您提供的错误信息和代码片段,问题出现在内存计算部分。错误是由于mem变量包含非数字字符("-")导致算术运算失败。
问题分析
在您提供的代码中:
mem=$(free -b | "${AWK}" -F ':' 'NR==2{print $2}' | "${AWK}" '{print $1"-"$6}')
这行代码将内存信息格式化为总内存-可用内存的字符串格式,但后续的算术运算无法处理这种格式。
解决方案
修改/usr/bin/screenfetch文件中的相关代码:
# 找到原来的代码段
mem=$(free -b | "${AWK}" -F ':' 'NR==2{print $2}' | "${AWK}" '{print $1"-"$6}')
usedmem=$((mem / 1024 / 1024))
totalmem=$((${mem//-*} / 1024 / 1024))
# 替换为以下代码
mem_info=$(free -b | "${AWK}" -F ':' 'NR==2{print $2}' | "${AWK}" '{print $1" "$6}')
totalmem=$(echo "$mem_info" | "${AWK}" '{print $1}')
availablemem=$(echo "$mem_info" | "${AWK}" '{print $2}')
usedmem=$(( (totalmem - availablemem) / 1024 / 1024 ))
totalmem=$(( totalmem / 1024 / 1024 ))
或者更简洁的版本:
# 替换原来的代码段
mem_info=$(free -b | awk 'NR==2{print $2,$7}')
totalmem=$(echo $mem_info | awk '{print $1}')
availablemem=$(echo $mem_info | awk '{print $2}')
usedmem=$(( (totalmem - availablemem) / 1024 / 1024 ))
totalmem=$(( totalmem / 1024 / 1024 ))
修改步骤
- 备份原文件:
sudo cp /usr/bin/screenfetch /usr/bin/screenfetch.backup
- 使用文本编辑器修改文件:
sudo vim /usr/bin/screenfetch
- 找到第1892行附近的代码段并进行替换
- 保存文件后测试:
screenfetch
替代方案
如果上述修改仍有问题,可以考虑重新安装screenfetch:
# 卸载当前版本
sudo pacman -R screenfetch
# 重新安装
sudo pacman -S screenfetch
或者使用neofetch作为替代工具:
sudo pacman -S neofetch
neofetch
希望这个解决方案能帮助您解决问题!