画面回転スクリプトの問題

画面回転スクリプトの問題

私はDell XPS 12コンバーチブルノートブック/タブレットでAntergos LinuxとGnome 3.18.2を実行しており、画面の回転をより便利にするよう努めています。

次のスクリプトバージョンを抽出しました。Ubuntuフォーラム投稿表示名などに合わせて修正しました。各行は個別に実行されると期待される結果を持ちますが、実際のスクリプトを実行すると何も起こりません。エラーもなく、画面の回転もなく、何も起こりません。

 #!/bin/sh
rotation='xrandr -q --verbose|grep eDP1|cut -b45-50'
if [[ $rotation = "normal" ]] ;
then
  xrandr -o right
else
  xrandr -o normal
fi

これが期待どおりに機能しない理由のアイデアはありますか?

よろしくお願いします!

答え1

クイックソリューション


設定方法に応じて、rotation変数に出力を取得したい書き込みコマンドが含まれます。
あなたが望むのは、command substitutionコマンドの出力をに保存することです。またはをrotation使用してrotation=$(xrandr -q ...)これを行うことができますrotation=`xrandr -q ...`

背景


コマンド置換はサブシェルでコマンドを実行し、その出力をstdout変数に保存します。これは非常に一般的なものであり、個人的に使用することを好みます$()

command substitutionもっと読むことができますバッシュハッカーウィキ

一重引用符(強い引用符)を使用すると、bashに引用符内の何も拡張しないように指示できます。たとえば、を使用するとa='$FOO'$a保持します$FOO。 Bashは引用した内容をそのままにして、変数に直接混在させます。

引用の詳細については、以下でも確認できます。バッシュハッカーウィキ

関連情報