我正在学习 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)