读取屏幕状态

读取屏幕状态

我曾经在 fedora 22 中使用以下命令读取屏幕旋转状态:

status=$(xrandr --verbose | grep LVDS1 | awk '{print $6}'

输出会是类似的东西noramlinverted即使我与其他一些监视器/投影仪共享屏幕,这也有效。更新到 Fedora 23 后,每次我将笔记本电脑连接到外部显示器或投影仪时,该行的信息都会xrandr略有变化,并且该$6部分会显示没有给我任何信息(normal的部分(normal left inverted right x axis y axis),我必须更改$6获取$5监视器的状态。我通过测试第一个字符来修复问题,如果是,(则使用其他输出。那是,

testvalue=$(xrandr --verbose | grep LVDS1 | awk '{print $6}')
[ ${testvalue:0:1} == "(" ] && status=$(xrandr --verbose | grep LVDS1 | awk '{print $5}') || status=$(xrandr --verbose | grep LVDS1 | awk '{print $6}')

这样就暂时完成了工作。我的问题是如何以更稳定的方式解决这个问题?

答案1

xrandr | awk -F'(' '/^LVDS1/{ split($2,a," "); print a[3]}'

xrandr 打印此行时不带 --verbose。

使用“(”作为字段分隔符

只查看匹配 /^LVDS1/ 的行

使用“”作为分隔符将第二个字段拆分为一个数组(名为 a)

最后打印a的第三个元素

相关内容