Bash

bash為字元串中的每個斜杠插入反斜杠

  • April 23, 2022

我有一個字元串是路徑:

/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可能會自己處理反斜杠字元。

引用自:https://unix.stackexchange.com/questions/700123