(相关资料图)
在debian12(testing)上运行screenfetch报错,如下所示:
~$ screenfetch/usr/bin/screenfetch: 行 1851: -: 语法错误:需要操作数(错误记号是 "-") _,met$$$$$gg. ×××××@deb-test ,g$$$$$$$$$$$$$$$P. OS: Debian 12 bookworm ,g$$P"" """Y$$.". Kernel: x86_64 Linux 6.1.0-7-amd64 ,$$P" `$$$. Uptime: 17m ",$$P ,ggs. `$$b: Packages: 2065 `d$$" ,$P"" . $$$ Shell: bash $$P d$" , $$P Resolution: 1920x1200 $$: $$. - ,d$$" DE: KDE 5.103.0 / Plasma 5.27.2 $$\; Y$b._ _,d$P" WM: KWin Y$$. `.`"Y$$$$P"" GTK Theme: Breeze [GTK2/3] `$$b "-.__ Icon Theme: breeze `Y$$ Disk: 501G / 1.1T (48%) `Y$$. CPU: AMD Ryzen 9 5950X 16-Core @ 32x 3.4GHz `$$b. GPU: VMware SVGA II Adapter `Y$$b. RAM: - `"Y$b._ `""""
根据提示打开/usr/bin/screenfetch这个脚本,可以看到报错位置的上下文是这样的:
mem=$(free -b | awk -F ":" "NR==2{print $2}" | awk "{print $1"-"$6}")usedmem=$((mem / 1024 / 1024))
运行free -b命令,可见正常输出:
total used free shared buff/cache available内存: 16781590528 3409371136 11827744768 169746432 2212745216 13372219392交换: 1023406080 0 1023406080
但是运行 free -b | awk -F ":" "NR==2{print $2}" 就无输出了。抓耳挠腮的想了一下,才发现在中文的debian系统上,free -b命令所输出内容中的冒号是中文字符,而screenfetch脚本中匹配处理的是英文字符。进行如下丑陋的打补丁后,报错问题解决:
# 这是一个丑陋的补丁,用以解决中文系统下的符号识别问题# mem=$(free -b | awk -F ":" "NR==2{print $2}" | awk "{print $1"-"$6}")mem=$(free -b | awk -F ":" "NR==2{print $2}" | awk "{print $1"-"$6}")usedmem=$((mem / 1024 / 1024))
关键词: