我直接在命令提示符 (PS1) 中使用这段代码,它告诉我前一个命令是否正确执行。
PS1="\`if [ \$? = 0 ]; then echo -e \"\e[1;32m[?? ]\"\e[0m; else echo -e \"\e[1;31m[ ]\"\e[0m; fi\`-[\u@\h: \w]"
Run Code Online (Sandbox Code Playgroud)
我不喜欢反引号。有没有办法在不使用``的情况下执行它?
另外,这是否会干扰另一个脚本的结果?我已经公开了一个在命令提示符下调用的函数,但是这一段弄乱了结果。该函数仅在导出 PS1 时调用一次,而不是每次加载命令提示符时调用。
更新 1:所以我尝试了普通的“$()”,但没有用。而且,现在我更困惑了,因为如果给它添加一个反斜杠的话——“\$()”。为什么是这样?有人知道吗?“$”需要转义吗?
原作:
export PS1="[\`if [ \$? = 0 ]; then echo -e \"\e[1;32m[?? ]\"\e[0m; else echo -e \"\e[1;31m[ ]\"\e[0m; fi\`]-[\u@\h: \w] \$ "
Run Code Online (Sandbox Code Playgroud)
结果:
[?? ]-[rordev@Luiss-MBP: ~/Development/test] $
Run Code Online (Sandbox Code Playgroud)
这不起作用:
export PS1="[$(if [ $? = 0 ]; then echo -e \e[1;32m[?? ]\e[0m; else echo -e \e[1;31m[ ]\e[0m; fi)]-[\u@\h: \w] \$ "
Run Code Online (Sandbox Code Playgroud)
结果:
-bash: 32m[??: command …
Run Code Online (Sandbox Code Playgroud)