13 一个简单的问题,但我找不到答案。zsh文档使我不知所措:-( function z () { echo ${1:s/the/THE} } $ z thethethe THEthethe ... 我如何才能将所有 “ the”替换为“ THE”,而不仅仅是第一次出现?使用zsh,这似乎是最难找到的示例。 zsh string — 雷·安德鲁斯 source
23 这是一个历史扩展修饰符,因此请在g之前添加该修饰符s。 echo ${1:gs/the/THE} 或者,使用参数扩展语法,其中双斜杠表示全局替换。在这种情况下,后面的部分s//是通配符模式,而历史记录扩展替换采用文字字符串。 echo ${1//the/THE} — 吉尔斯(Gillles) source
3 Thereyago,它必须很简单: echo ${1//the/THE} ...用双斜杠即可,而且您不能用“:s” 顺便说一句,我要感谢“ StackExchange”网站的存在。在成千上万个地点中,每个人可能会提出一个问题,这是迄今为止最好的-不仅几乎总是可以得到答案,而且这些答案总是质量最高。 — 雷·安德鲁斯 source
1 //如果您只想将一个特定的单词替换为所有大写字母,而其余部分保持不变,则//效果最佳。如果您尝试将所有内容都转换为大写,则可以在变量上使用“:u” SOME_ENV_VALUE='thethethe' echo $SOME_ENV_VALUE:u // outputs: THETHETHE 您可以验证zsh扩展和替换手册中可用的修饰符 man zshexpn — 布雷登堡 source