我如何将/更改为\ /

时间:2019-02-06 13:00:42

标签: bash

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

TEST="https://myhost/mydomain/

我需要将其更改为

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

我该怎么做?

1 个答案:

答案 0 :(得分:1)

使用变量扩展

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

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

Bash manual parameter expansion

  • 测试之后的第一个//表示替换所有出现的情况
  • 下一个/必须转义,因为/是模式和替换字符串之间的分隔符
  • 然后必须转义反斜线,因为它是转义字符
  

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

     

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