2

在 oh-my-zsh 的升级工具中,我找到了这一行(第 2 行):

current_path=${current_path/ /\\ }

它做了什么?

此外,这条线适用于mac,但在我的ubuntu服务器上它输出一个错误说:

.oh-my-zsh/tools/upgrade.sh: 2: .oh-my-zsh/tools/upgrade.sh: Bad substitution
4

4 回答 4

11

在 Ubuntu 上更新它

cd ~/.oh-my-zsh
bash ~/.oh-my-zsh/tools/upgrade.sh
于 2013-05-18T23:23:38.757 回答
2

请参阅手册中的参数扩展

${name/pattern/repl}
${name//pattern/repl} 

Replace the longest possible match of pattern in the expansion of parameter name by string repl. The first form replaces just the first occurrence, the second form all occurrences.

本质上,上面所做的就是在${current_path}.

请注意,POSIX 未指定此语法(有关更多信息,请参见此处),但所有当前和版本bash都支持它。该错误表明您没有在您认为自己执行的外壳下运行该工具(不支持它的外壳)。kshzshBad substitutionupgrade.sh

于 2013-04-20T15:27:48.207 回答
1

该行将反斜杠转义$current_path变量中的第一个空格。并非所有 shell 都支持这种类型的替换,这就是它在 Ubuntu 上失败的原因。

据我所知,这条线没有充分的理由存在。如果在必要时转义空白,即使有效,该方法也是不够的。更糟糕的是,因为该变量的唯一后续使用将它放在双引号中,并且空格的反斜杠转义实际上会破坏它。

于 2013-04-20T15:27:36.170 回答
1

我设法使用命令进行更新:

cd ~/.oh-my-zsh
ggpull

#or

git pull origin master
于 2013-06-10T07:43:12.720 回答