英文:
Bash prompt PS1 newline must be conditional
问题
如何使 PS1 中的新行 \n
取决于先前的 Bash 变量,因为这不能成功:
foo=`
NEWLINE=
#...
((foo)) && {
THELINE=foobar
NEWLINE='\n'
}
PS1='$(echo $THELINE)$NEWLINE\w-$ '
如果 foo 不为 0,则 THELINE 是 "foobar" 并带有换行,否则无论 THELINE 是什么,都不应加入换行符。
真诚的有用帮助是宝贵的
`$.............``
英文:
How do we have PS1 newline \n
being conditional on whether previous Bash variable's one, as this cannot succeed:
foo=
NEWLINE=
#...
((foo)) && {
THELINE=foobar
NEWLINE='\n'
}
PS1='$(echo $THELINE)$NEWLINE\w-$ '
if foo not 0 then THELINE is "foobar" with a newline, otherwise whatever THELINE is it musn't be given \n
sincere useful help valuable
`$.............``
答案1
得分: 4
你可以使用 PROMPT_COMMAND
在每次提示前调用一个函数。
很抱歉,我不理解你试图做什么,所以无法准确地告诉你如何完成你想要的。不过以下内容可以帮到你:
prompt_cmd() {
if [[ condition ]]; then
PS1="true_prompt$ "
else
PS1="false_prompt$ "
fi
}
export PROMPT_COMMAND=prompt_cmd
英文:
You can use PROMPT_COMMAND
to make bash
call a function before every prompt.
Unfortunately, I do not understand what you are trying to do so I can't show you exactly how to do what you want. This should get you started though:
prompt_cmd() {
if [[ condition ]]; then
PS1="true_prompt$ "
else
PS1="false_prompt$ "
fi
}
export PROMPT_COMMAND=prompt_cmd
答案2
得分: 0
你可以直接将逻辑放在PS1中,如下所示:
PS1='$(((foo)) && echo "foobar\n\r" || echo "no") $ '
示例:
$ PS1='$(((foo)) && echo "foobar\n\r" || echo "no") $ '
no $ foo=1
foobar
$
英文:
You can put the logic directly in PS1 as :
PS1='$(((foo)) && echo $"foobar\n\r" || echo "no") $ '
example:
$ PS1='$(((foo)) && echo $"foobar\n\r" || echo "no") $ '
no $ foo=1
foobar
$
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论