最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

最新:screenfetch报错 /usr/bin/screenfetch: 行 1851: -: 语法错误:需要操作数(错误记号是 "-") 的一种解决方法

来源:博客园


【资料图】

在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))

关键词: