
現在のGTKテーマを確認したい、現在時刻を確認し、それに基づいてテーマを次のように変更したいと思います。
GtkTheme=$(/usr/bin/gsettings get org.gnome.desktop.interface gtk-theme)
NightTheme="Adapta-Nokto"
DayTheme="Adapta"
TimeHrWithZero=$(date +%H)
TimeHr=$(bc<<<${TimeHrWithZero})
if [ "${GtkTheme}" != "${NightTheme}" ] && if ((${TimeHr}>=19 || ${TimeHr}<=5)); then
echo ${GtkTheme} ${TimeHr} Night Theme
/usr/bin/gsettings set org.gnome.desktop.interface gtk-theme ${NightTheme}
else
echo ${GtkTheme} ${TimeHr} Day Theme
/usr/bin/gsettings set org.gnome.desktop.interface gtk-theme "${DayTheme}"
fi
コードを削除すると、if [ "${GtkTheme}" != "${NightTheme}" ] &&
コードは機能しますが、この条件はありません。文字列と整数を同時に比較するには?
答え1
それが必要です:
if [ "${GtkTheme}" != "${NightTheme}" ] && ((${TimeHr}>=19 || ${TimeHr}<=5)); then
if
条件の間に秒はありません。ステートメントの条件if
は複合コマンドであり、if
この問題の原因となる可能性がある追加のsを含めることができます。
例:
if true && if true; then false; fi; then echo foo; else echo bar; fi
次のようにグループ化されます。
if (true && (if true; then false; fi)); then echo foo; else echo bar; fi
()
ここでは、サブシェルを表すのではなく、グループ化を表示するために使用しています。