shell 脚本中的 if 语句只能发挥一半作用

shell 脚本中的 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="hello world"
    echo "$TEST"
    

    将输出

    你好世界

  • 反引号 ``` 将扩展命令:

    TEST="pwd"
    echo `$TEST`
    

    将输出

    /路径/到/当前/目录

但要获取命令的结果,您也可以使用$(myCmd).

相关内容