我曾经在 fedora 22 中使用以下命令读取屏幕旋转状态:
status=$(xrandr --verbose | grep LVDS1 | awk '{print $6}'
输出会是类似的东西noraml
。inverted
即使我与其他一些监视器/投影仪共享屏幕,这也有效。更新到 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的第三个元素