Se a instrução no script shell funcionar apenas a meia

1

Eu tenho tentado escrever um roteiro para girar meu monitor, então eu o atribuo a uma tecla do teclado. Eu tenho tido bastante sucesso em fazer isso girar uma vez, no entanto, quando executo o script novamente, ele não roda. Provavelmente estou sentindo falta de algo óbvio, já que sou novo nisso.

Veja o que eu tenho:

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

Eu segui as instruções encontradas aqui, mas tive que modificá-las um pouco: link

Estou executando o Arch Linux 3.19.3-3-ARCH se isso for importante.

    
por d.pundt 14.04.2015 / 21:34

1 resposta

1

O problema é como você pega o resultado do seu comando e coloca na sua variável $rotation : Você deve substituir

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

com

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

ATUALIZAÇÃO: A explicação é que os diferentes citações expandem comandos e variáveis de maneiras diferentes:

  • aspas simples ' não expandem nada:

    TEST="hello world"
    echo '$TEST'
    

    irá produzir

    $TEST

  • aspas duplas " expandem as variáveis:

    TEST="hello world"
    echo "$TEST"
    

    irá produzir

    hello world

  • E os backticks '' 'expandem os comandos:

    TEST="pwd"
    echo '$TEST'
    

    irá produzir

    /path/to/current/dir

Mas, para obter o resultado de um comando, você também pode usar $(myCmd) .

    
por 14.04.2015 / 21:44