我正在尝试构建一个基于时间间隔返回输出的zsh函数。最初,“你口渴了”的条件为真,但是通过命令行更改变量thirsty
并将其设置为false后,初始if语句执行,但其中的变量thirsty
并没有更改全局变量thirsty
。有没有一种方法可以修改全局变量thirsty
?
thirsty=
last_time=
drink_water() {
echo -n "$thirsty"
if [[ $thirsty == false ]]; then
last_time="$[$(date +%s) + 10]"
thirsty=true
echo -n "${last_time} $(date +%s) ${thirsty}"
elif [[ $[last_time] -lt $(date +%s) ]]; then
echo -n " You're thirsty"
fi
}
echo -n
实际上是不好的形式 -- POSIX 规范中的echo
将-n
提供的行为标记为实现定义,这意味着不同的 shell 可以对echo -n
做出不同的处理。如果您想要确保打印您的确切字符串而没有换行符,请使用printf '%s' "string"
;还请参阅前面提到的链接中的 APPLICATION USAGE 部分。) - Charles Duffyspaceship_prompt
调用了这个函数。最后,我有PROMPT ='$(spaceship_prompt)'
。 - Lakshay KalbhorPROMPT='$(drink_water)'
显示。由于thirsty
是一个全局变量,因此可以通过终端将其设置为 false。 - Lakshay Kalbhor