私は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は引用した内容をそのままにして、変数に直接混在させます。
引用の詳細については、以下でも確認できます。バッシュハッカーウィキ。