在 bash 中将变量传递给 xrandr

在 bash 中将变量传递给 xrandr

我正在尝试将变量传递给 xrandr,以便当脚本运行时,它将输出自动分辨率。

#!/bin/bash
DISPLAY=$(xrandr | grep ' connected' | cut-d' ' -f1)
xrandr --output "$DISPLAY" --auto

会输出

无法打开显示器 DisplayPort-0

如果我像下面这样改变变量..

DISPLAY=DisplayPort-0

它仍然会抛出相同的错误

只有当我硬编码,或者像这样运行实际命令时......

xrandr --output DisplayPort-0 --auto

它会按预期运行吗?有什么想法吗?我觉得令人费解的是为什么 xrandr 不接受 bash 脚本中的变量。

答案1

不幸的命名 -DISPLAY已被保留以指向正确的 X 服务器。打开一个新的 shell 并检查其内容:

$ echo $DISPLAY
:0

为变量使用不同的名称DISPLAY。顺便说一句,这也是为什么建议在脚本中使用小写变量名称的原因,因此在您的情况下可能是:

display=$(xrandr | grep ' connected' | cut -d' ' -f1)

此外,请注意可能同时连接超过 1 个屏幕,在这种情况下xrandr --output "$display" --auto将会失败。

相关内容