シェルスクリプトの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)

おすすめ記事