Если выражение в shell-скрипте работает только полурабочее

Я пытаюсь написать скрипт для поворота монитора, а затем назначу его клавише клавиатуры. Я был довольно успешным в том, чтобы заставить его вращаться один раз, однако, когда я снова запускаю сценарий, он не вращается. Вероятно, мне не хватает чего-то очевидного, поскольку я новичок в этом.

Вот что я имею:

#!/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.

One Solution collect form web for “Если выражение в shell-скрипте работает только полурабочее”

Проблема заключается в том, как получить результат вашей команды и поместить ее в переменную $rotation : вы должны заменить

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

с

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

ОБНОВЛЕНИЕ: Экспликация заключается в том, что кавычки differents расширяют команды и переменные по-разному:

  • простые цитаты ' не расширяют ничего:

     TEST="hello world" echo '$TEST' 

    выйдет

    $ ИСПЫТАНИЕ

  • двойные кавычки " будут расширять переменные:

     TEST="hello world" echo "$TEST" 

    выйдет

    Привет мир

  • А backticks “ `будут расширять команды:

     TEST="pwd" echo `$TEST` 

    выйдет

    / Путь / к / ток / реж

Но для получения результата команды вы также можете использовать $(myCmd) .

  • Поиск и замена имени пути в Linux с помощью sed
  • Проверка наличия нескольких файлов, данных по каналам
  • Создавать древовидную структуру каталога клонирования и копировать файлы в соответствующие каталоги, измененные после определенной даты
  • Bash tcp redirection end of transmission
  • Как использовать kdialog progressbar из сценария Bash, когда панель была инициализирована в другом скрипте?
  • aliasing cd to pushd - это хорошая идея?
  • значение переменной оболочки для цикла, отличного от цикла
  • Удалить тег и содержимое на основе дочернего тега и добавить новый контент - Shellscript xml
  • Используя expr, $ (()), (())
  • Может ли libnotify использоваться для выполнения скрипта?
  • Как перебрать пользователей?
  • Interesting Posts

    WiFi не работает с драйвером Broadcom 43ba

    В каком порядке применяются правила ggle dscp, применяемые с iptables?

    удалить новые строки

    Перечислите прямые символические ссылки (ссылки, которые не указывают на другую символическую ссылку)

    Почему это пока не работает в Ubuntu?

    Как перечислять только имена файлов, удаляющих каталоги и подкаталоги

    Каково влияние на производительность системы при включении информации об отладке ядра?

    Ansible: Как разобрать источник инвентаря

    Можно ли изменять права доступа к файлам при копировании

    Установите 64-битное приложение (32-битное поле пользователя / 64-битное ядро) debian

    mpg321 играет слишком быстро, на высокой высоте, через USB Audio

    Как удалить несколько файлов с помощью sftp

    Прочитать длинную строку в файле, используя цикл чтения?

    Сделать vim / curl распознавать https: // ссылки

    nohup размещает каждый процесс на одном ядре специально

    Linux и Unix - лучшая ОС в мире.