【发布时间】:2019-06-30 10:38:44
【问题描述】:
我是 bash 脚本的新手 我有变量
TEST="https://myhost/mydomain/
我需要改成
TEST="https:\/\/myhost\/mydomain\/
我该怎么做?
【问题讨论】:
-
为什么你需要这样做?这是一个重要的问题,因为如果您希望将这些反斜杠视为语法而不是展开时的文字数据,那么您会大吃一惊。
标签: bash
我是 bash 脚本的新手 我有变量
TEST="https://myhost/mydomain/
我需要改成
TEST="https:\/\/myhost\/mydomain\/
我该怎么做?
【问题讨论】:
标签: bash
使用变量扩展
TEST="https://myhost/mydomain/"
TEST=${TEST//\//\\/}
Bash manual parameter expansion
// 意味着替换所有出现的事件/ 必须转义,因为/ 是模式和替换字符串之间的分隔符${参数/模式/字符串}
模式被扩展以产生一个模式,就像在文件名扩展中一样。参数被扩展,模式与其值的最长匹配被替换为字符串。匹配是根据下面描述的规则执行的(请参阅模式匹配)。 如果pattern以'/'开头,则pattern的所有匹配都替换为字符串。通常只替换第一个匹配。如果pattern以‘#’开头,它必须匹配参数扩展值的开头。如果模式以“%”开头,则必须匹配参数扩展值的末尾。如果 string 为 null,则删除 pattern 的匹配项,并且可以省略 / 后面的 pattern。如果启用了 nocasematch shell 选项(参见 Shopt Builtin 中 shopt 的描述),则执行匹配时不考虑字母字符的大小写。如果参数是‘@’或‘’,则对每个位置参数依次进行替换操作,展开就是结果列表。如果 parameter 是下标为“@”或“”的数组变量,则依次对数组的每个成员进行替换操作,展开结果为列表。
【讨论】: