我想检查当前的 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
在这里,我用来()
显示分组,而不是指示子 shell。