`${f// /_}` 中的双斜杠是什么意思?

Kal*_*Dev 19 bash

我正在学习 Bash,我想用其他“非空白”字符替换空格字符。我正在使用for循环:

for f in *\ *; do mv "$f" "${f// /_}"; done
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么双斜线和空格在${f// /_}?有什么作用${f// /_}

hee*_*ayl 21

那是使用bash参数扩展的替换模式。

${f// /_}

  • 双斜杠//用于替换所有出现的空格_,如果你放一个斜杠/,只有第一个空格会被替换

  • 空格在那里是因为您正在替换空格(带下划线)

所以模式基本上是:

${parameter//find/replace}
Run Code Online (Sandbox Code Playgroud)

检查man bash以获得更多想法。

要立即进入 的Parameter Expansion部分man bash

LESS=+/'Parameter Expansion' man bash
Run Code Online (Sandbox Code Playgroud)

  • 简而言之,它是一个**全局** 搜索和替换。 (3认同)