这个问题与这个问题非常相似:彩色 PS1 琴弦
但我还是没有完全明白。
所以说我有这个功能
function getjobs {
echo $(jobs | wc -l)
}
我的 PS1 是这样的
PS1="\u@\h: [jobs "
PS1="$PS1\$(if [[ $(getjobs) == 0 ]] ; then
echo $(color $green);
else
echo $(color $red);
fi)"
现在,只有在第一次加载 .bashrc 时才会对其进行评估,但我希望每次出现新提示时都评估这个 if 语句。
我怎样才能做到这一点?
编辑:该color
函数返回这些颜色的转义序列。
答案1
我通常使用这样的东西:
method_that_echos_values(){
if [[ ]]; then
echo -n "something"
else
echo -n "something else"
fi
}
export PS1="\$(method_that_echoes_values)"
请注意,需要将其提取到方法中
答案2
答案3
因此,我进行了更多实验,尝试将不同的引号放在不同的位置,并找到了一些有效的方法,但如果有人知道更简洁、更好的解决方案,请告诉我。
PS1="\u@\h: [jobs "
PS1="$PS1\$(if [[ "'$(getjobs)'" == 0 ]] ; then
echo $(color $green);
else
echo $(color $red);
fi)"
我所要做的就是将我想要重新评估的部分放在单引号中,将其他所有内容放在双引号中。我不认为这会起作用,因为我有一个双引号字符串和一个单引号字符串,但我想这没什么问题。