Can I use sed to manipulate a variable in bash?
Try this:
website=$(sed 's|/|\\/|g' <<< $website)
Bash actually supports this sort of replacement natively:
${parameter/pattern/string}
— replace the first match of pattern
with string
.${parameter//pattern/string}
— replace all matches of pattern
with string
.
Therefore you can do:
website=${website////\\/}
Explanation:
website=${website // / / \\/}
^ ^ ^ ^
| | | |
| | | string, '\' needs to be backslashed
| | delimiter
| pattern
replace globally
You can also use Parameter-Expansion to replace sub-strings in variable. For example:
website="https://stackoverflow.com/a/58899829/658497"
echo "${website//\//\\/}"
https:\/\/stackoverflow.com\/a\/58899829\/658497
echo $website | sed 's/\//\\\//g'
or, for better readability:
echo $website | sed 's|/|\\/|g'