通过在 RedHat 中提供 X 和 Y 坐标来设置屏幕分辨率的脚本

通过在 RedHat 中提供 X 和 Y 坐标来设置屏幕分辨率的脚本

目标是提供分辨率 X 和 Y 作为脚本./res_set.sh 1920 1080和 的参数gtfxrandr --newmode并将--addmode根据脚本执行。

#!/usr/bin/env bash
if [ "$1" == "-h" ]; then
echo "Usage: `basename $0` [X co-ordinate] [Y co-ordinate]"
exit 0
fi

echo "X Co-ordinate";
echo $1;
echo "Y Co-ordinate";
echo $2;
echo "Are you sure? [Y/N]";
read input;
if [ $input == "y" ];
then
gtf $1 $2 60 > kar1.txt                                             #To get modeline
sed -n '3 p' kar1.txt > kar2.txt                                    #Select Line 2
grep -o -E '["_x.0-9 ]+' kar2.txt > kar3.txt                        #Filter result
wo_filter=$(perl -p -e 's/(?:_60.00)//g' kar3.txt | grep "\S");     
filter=$(grep "\S" kar3.txt);
fil_resolution=$(grep -o -P '(?<=").*(?=")' <<< $wo_filter)
resolution=$(grep -o -P '(?<=").*(?=")' kar3.txt)
echo "Filter: $filter";
echo "Wo_filter: $wo_filter";
echo "Resolution: $resolution";
echo "Filted_Resolution: $fil_resolution";
var=$(xrandr --newmode $wo_filter)
xrandr --addmode default $fil_resolution
#rm -v kar*
else
exit;
fi

使用此脚本时,这会创建xrandr --newmode但无法将模式添加--addmode到分辨率列表中。我明白了xrandr:Cannot find mode。但如果xrandr --newmode--addmode命令单独执行,它就会工作并添加到模式列表中。

输入

输出

Xrandr 输出

这是的输出xrandr | tail

我的想法是:是$变量具有不同的数据类型并破坏我的结果?我如何能够在这里或 bash 中验证变量的数据类型(这很重要)?

相关内容