我在 Dell XPS 12 Convertible 笔记本电脑/平板电脑上运行 Antergos linux 和 Gnome 3.18.2,并且正在努力使屏幕旋转更加方便。
我从以下脚本中提取了以下脚本的一个版本Ubuntu 论坛帖子并修改它以匹配我的显示名称等。每一行单独运行时都有预期的结果,但是当我运行实际脚本时,没有任何反应 - 没有错误,没有屏幕旋转,什么也没有:
#!/bin/sh
rotation='xrandr -q --verbose|grep eDP1|cut -b45-50'
if [[ $rotation = "normal" ]] ;
then
xrandr -o right
else
xrandr -o normal
fi
有什么想法为什么这没有按预期工作吗?
提前致谢!
答案1
快速解决方案
您设置的方式
rotation
会导致变量包含您想要从中获取输出的写出命令。您想要做的是将
command substitution
命令的输出存储在rotation
.您可以通过使用rotation=$(xrandr -q ...)
或来实现此目的rotation=`xrandr -q ...`
。
背景
命令替换在子 shell 中执行命令并将其输出存储到
stdout
变量中。这是很常见的事情,我个人更喜欢使用$()
.
您可以阅读更多
command substitution
内容Bash 黑客维基。
通过使用单引号(强引号),您可以告诉 bash 不要扩展引号内的任何内容。例如,与a='$FOO'
,$a
保持$FOO
。 Bash 保留您引用的内容不变,并直接将其混入您的变量中。
更多关于引用的信息也可以在Bash 黑客维基。