3

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
4

1 回答 1

6

我是否正确理解您只想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
于 2012-12-16T00:41:50.663 回答