我想在我的程序中先获取用户输入,然后在每个/
前面插入一个\
,所以我写了这段代码,但它无法工作。
echo "input a website"
read website
sed '/\//i\/' $website
试试这个:
website=$(sed 's|/|\\/|g' <<< $website)
Bash实际上本地支持这种替换:
${parameter/pattern/string}
— 用string
替换第一个匹配的pattern
。
${parameter//pattern/string}
— 用string
替换所有匹配的pattern
。
因此,您可以执行以下操作:
website=${website////\\/}
解释:
website=${website // / / \\/}
^ ^ ^ ^
| | | |
| | | string, '\' needs to be backslashed
| | delimiter
| pattern
replace globally
echo $website | sed 's/\//\\\//g'
或者,为了更好的可读性:
echo $website | sed 's|/|\\/|g'
|
),传统上使用 /
作为分隔符。 - Karoly Horvathwebsite="https://dev59.com/Hmw15IYBdhLWcg3wO5SX#58899829"
echo "${website//\//\\/}"
https:\/\/stackoverflow.com\/a\/58899829\/658497
'\'
,我点了赞。 - Jesse Nickles