我收到错误
-bash: test1.bash: line 5: syntax error near unexpected token `elif'
'bash: test1.bash: line 5: `elif [$PWD | grep /mnt/c/ !="" OR pwd | grep /mnt/d/ !=""] then
除了写的代码,我什么都没有尝试
if [$PWD | grep /mnt/c/ =="" OR pwd | grep /mnt/d/ =="" OR pwd | grep /mnt/usb/ ==""] then
export PS1="$(tput setaf 47)bob$(tput setaf 14):$(tput setaf 47)linux$(tput setaf 14)>"
elif [$PWD | grep /mnt/c/ !="" OR pwd | grep /mnt/d/ !=""] then
export PS1="$(tput setaf 47)bob$(tput setaf 14):$(tput setaf 47)windows$(tput setaf 14)>"
else then
export PS1="$(tput setaf 47)bob$(tput setaf 14):$(tput setaf 47)unknows$(tput setaf 14)>"
if
如果我将驱动器安装在目录/mnt/c/
或/mnt/d/
中,例如,我希望将PS1更改为Windows,我希望更改PS1标签。
答案 0 :(得分:3)
您似乎正在寻找:
# much more efficient to just run this once rather than every single time you're going to
# change colors.
colors=(
[14]="$(tput setaf 14)"
[47]="$(tput setaf 47)"
)
set_prompt() {
case $PWD in
/mnt/c/*|/mnt/d/*) os_space=windows ;;
/mnt/usb/*) os_space=unknown ;;
*) os_space=linux ;;
esac
PS1="${colors[47]}bob${colors[14]}:${colors[47]}${os_space}${colors[14]}>"
}
PROMPT_COMMAND=set_prompt
[
不是shell语法-它是 command ,也可以在名称test
下使用。与其他任何命令一样,您需要在其名称和参数之间放置一个空格,并且只能使用指定该命令所期望的参数。运行[ foo | bar ]
时,您仅传递了[
的第一个实例foo
,并将其stdout连接到单独的命令bar
;这从来没有任何意义,因为test
不会向stdout写入任何内容。