if 语句似乎无法正常运行,无论 if 语句的结果如何,程序都会启动。我错过了什么?
#!/bin/bash
dtime=($(date |cut -c12-13))
sevenO="19"
redshift=($(gtk-redshift -l -31.9530044:115.8574693))
if ( [[ "$dtime" -gt "$sevenO" ]])
then
$redshift
fi
if 语句似乎无法正常运行,无论 if 语句的结果如何,程序都会启动。我错过了什么?
#!/bin/bash
dtime=($(date |cut -c12-13))
sevenO="19"
redshift=($(gtk-redshift -l -31.9530044:115.8574693))
if ( [[ "$dtime" -gt "$sevenO" ]])
then
$redshift
fi
我是否正确理解您只想gtk-redshift
在晚上 8 点到午夜之间跑步?如果是这样,问题是这个符号:
$(...)
...
立即运行命令,并评估其输出;所以这个声明:
redshift=($(gtk-redshift -l -31.9530044:115.8574693))
运行 command gtk-redshift -l -31.9530044:115.8574693
,然后将变量设置redshift
为包含该命令输出的数组。(由于周围的(...)
.不想要那些行为。)
您可以将 Bash 脚本简化为:
#!/bin/bash
if [[ "$(date +%k)" -ge 20 ]] ; then
gtk-redshift -l -31.9530044:115.8574693
fi