【问题标题】:How I can change / to \/ [duplicate]我如何将 / 更改为 \/ [重复]
【发布时间】:2019-06-30 10:38:44
【问题描述】:

我是 bash 脚本的新手 我有变量

TEST="https://myhost/mydomain/

我需要改成

 TEST="https:\/\/myhost\/mydomain\/

我该怎么做?

【问题讨论】:

  • 为什么你需要这样做?这是一个重要的问题,因为如果您希望将这些反斜杠视为语法而不是展开时的文字数据,那么您会大吃一惊。

标签: bash


【解决方案1】:

使用变量扩展

TEST="https://myhost/mydomain/"

TEST=${TEST//\//\\/}

Bash manual parameter expansion

  • TEST 之后的第一个// 意味着替换所有出现的事件
  • 下一个/ 必须转义,因为/ 是模式和替换字符串之间的分隔符
  • 那么反斜杠必须被转义,因为它是一个转义字符

${参数/模式/字符串}

模式被扩展以产生一个模式,就像在文件名扩展中一样。参数被扩展,模式与其值的最长匹配被替换为字符串。匹配是根据下面描述的规则执行的(请参阅模式匹配)。 如果pattern以'/'开头,则pattern的所有匹配都替换为字符串。通常只替换第一个匹配。如果pattern以‘#’开头,它必须匹配参数扩展值的开头。如果模式以“%”开头,则必须匹配参数扩展值的末尾。如果 string 为 null,则删除 pattern 的匹配项,并且可以省略 / 后面的 pattern。如果启用了 nocasematch shell 选项(参见 Shopt Builtin 中 shopt 的描述),则执行匹配时不考虑字母字符的大小写。如果参数是‘@’或‘’,则对每个位置参数依次进行替换操作,展开就是结果列表。如果 parameter 是下标为“@”或“”的数组变量,则依次对数组的每个成员进行替换操作,展开结果为列表。

【讨论】:

    猜你喜欢
    • 2012-11-17
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    相关资源
    最近更新 更多