쉘 스크립트의 if 문은 절반만 효과적입니다.

쉘 스크립트의 if 문은 절반만 효과적입니다.

저는 디스플레이를 회전시킨 다음 이를 키보드 키에 할당하는 스크립트를 작성하려고 했습니다. 한 번 회전하는 데 상당히 성공했지만 스크립트를 다시 실행하면 회전하지 않습니다. 나는 이것에 익숙하지 않기 때문에 아마도 분명한 것을 놓쳤을 것입니다.

이것이 내가 가진 것입니다:

#!/bin/sh
rotation="xrandr -q --verbose|grep LVDS1|cut -b37-42"
if [ "$rotation" = 'normal' ] ;
then
  xrandr -o inverted
else
  xrandr -o normal
fi

여기에 있는 지침을 따랐지만 약간 수정해야 했습니다. http://ubuntuforums.org/showthread.php?t=1675299

그게 중요하다면 저는 Arch Linux 3.19.3-3-ARCH를 실행하고 있습니다.

답변1

문제는 명령의 결과를 얻어 변수에 넣는 방식입니다 $rotation.

rotation="xrandr -q --verbose|grep LVDS1|cut -b37-42"

그리고

rotation=$(xrandr -q --verbose|grep LVDS1|cut -b37-42)

업데이트: 설명에 따르면 다른 인용문은 명령과 변수를 다른 방식으로 확장합니다.

  • 간단한 따옴표는 '아무것도 확장하지 않습니다.

    TEST="hello world"
    echo '$TEST'
    

    출력됩니다

    $test

  • 큰따옴표는 "변수를 확장합니다.

    TEST="hello world"
    echo "$TEST"
    

    출력됩니다

    안녕하세요 세계

  • 백틱 ```은 명령을 확장합니다:

    TEST="pwd"
    echo `$TEST`
    

    출력됩니다

    /경로/대상/현재/디렉토리

그러나 명령의 결과를 얻으려면 $(myCmd).

관련 정보