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
Run Code Online (Sandbox Code Playgroud)
我是否理解你只想在gtk-redshift
晚上8点到午夜之间跑步?如果是这样,问题是这种表示法:
$(...)
Run Code Online (Sandbox Code Playgroud)
...
立即运行命令,并计算其输出; 所以这句话:
redshift=($(gtk-redshift -l -31.9530044:115.8574693))
Run Code Online (Sandbox Code Playgroud)
运行该命令gtk-redshift -l -31.9530044:115.8574693
,然后将该变量设置为redshift
包含该命令输出的数组.(由于周围的数组(...)
.请注意,在Bash中,括号不仅仅用于分组.它们具有实际行为 - 例如,在这种情况下,创建一个数组 - 并且你不应该在你不喜欢的地方使用它们我想要那些行为.)
您可以将Bash脚本简化为:
#!/bin/bash
if [[ "$(date +%k)" -ge 20 ]] ; then
gtk-redshift -l -31.9530044:115.8574693
fi
Run Code Online (Sandbox Code Playgroud)