Intereting Posts
Могу ли я изменить тип терминала, который используется для входа через SSH? Как получить текущее время в другом часовом поясе без изменения системного времени? Может ли linux работать на флэш-накопителе на длительный срок? Удалите файлы в месте назначения, которые находятся в источнике, используя rsync Выход из скрипта с любой кнопкой Рекурсивный wget в конечном итоге начинает работать с ошибкой «Невозможно разрешить хост» / «Временный сбой при разрешении имен» фильтровать данные по значению столбца Один из моих pdf-файлов на моем сервере apache можно получить, а другой не может, с теми же правами и одним и тем же каталогом sed + удалить первый каталог из пути Как смонтировать файловые системы с размерами блоков> 4 КБ? Проблема с установкой драйвера Radeon Используйте sed для замены текста и вывода на новую строку, а также распечатайте его Статистика трафика на сетевой порт Какова цель `/ etc / group-` bash: xport: команда не найдена

Если выражение в 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.

Проблема заключается в том, как получить результат вашей команды и поместить ее в переменную $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) .