화면 해상도를 전환하는 bash의 if-then 문

화면 해상도를 전환하는 bash의 if-then 문

xrandr로 화면 해상도를 확인하고 현재 해상도에 따라 해상도를 변경하는 스크립트를 어떻게 작성합니까? 즉, 해상도를 전환합니다.

샘플 출력xrandr -q

   1920x1080     59.98 +  59.97    59.96    59.93  
   1680x1050     59.95    59.88  
   1600x1024     60.17  
   1400x1050     59.98  
   1600x900      59.99*   59.94    59.95    59.82

xrandr -s 0현재 해상도가 1600x900인지 확인한 다음 실행하고 , 현재 해상도가 1920x1080인 경우 실행 하려면 어떻게 표현해야 합니까 xrandr -s 4?

간단히 말해서 문제는 해상도를 전환하기 위해 스크립트가 xrandr -q의 출력을 인식하도록 만드는 방법입니다. 예를 들어:

#!/bin/bash

if <current resolution is 1920x1080>
then
  xrandr -s 5
elif <current resolution is 1600x900>
then
  xrandr -s 0
else
 <do nothing>
fi

기본적으로 스크립트가 별표가 있는 줄을 인식하고 이를 다른 줄로 전환할 수 있는 수단이 필요합니다. 그 일은 어떻게 이루어질 것입니까?

답변1

솔루션의 예

솔루션은 귀하의 필요에 따라 맞춤화될 수 있습니다.

#!/bin/bash
MYRES=$(xrandr -q | grep "\*" | awk '{ print $1; }')
echo -e "\nResolution is $MYRES\n"
case "$MYRES" in
  "1920x1080")
    echo "Size = 5"
    xrandr -s 5
    ;;
  "1680x1050")
    echo "Size = 4"
    xrandr -s 4
    ;;
  "1600x1024")
    echo "Size = 4"
    xrandr -s 4
    ;;
  "1400x1050")
    echo "Size = 3"
    xrandr -s 3
    ;;
  "1600x900")
    echo "Size = 0"
    xrandr -s 0
    ;;
  *)
    echo "Do nothing."
    ;;
esac

답변2

이 답변되었습니다여기에 의해 @초바라unix.stackexchange.com에서

프로세스 대체 사용:

#!/bin/bash

read resolution _rest < <(xrandr | grep '\*')

if [[ $resolution = 1920x1080 ]] ; then
    xrandr -s 5
elif [[ $resolution = 1600x900 ]] ; then
    xrandr -s 0
else
    echo Unknown resolution >&2
fi

관련 정보