Bash
bash為字元串中的每個斜杠插入反斜杠
我有一個字元串是路徑:
/tmp/something
我需要用反斜杠轉義正斜杠:
\/tmp\/something
我怎樣才能做到這一點?也許
sed
?請指出我正確的方向。
您可以使用 Bash 自己的變數操作方法(參數擴展)來做到這一點,儘管語法相當可怕:
$ string='/tmp/something' $ escapedstring="${string//\//\\\/}" $ printf '%s\n' "$escapedstring" \/tmp\/something
為了進一步解釋這一點,在 bash 中的
${var//xxx/yyy}
意思是“獲取變數var
並將所有出現的地方替換為xxx
.yyy
”。在這種情況下,您需要在指定替換和替換時轉義斜線;前者\/
用於單個正斜杠,後者\\\/
用於反斜杠加正斜杠,因此您最終會得到可笑的外觀${string//\//\\\/}
。切記不要使用
echo
來顯示其內容,因為取決於實現或環境,echo
可能會自己處理反斜杠字元。