Bash - 替换转义字符

时间:2017-07-03 08:52:27

标签: bash escaping

我必须使用转义版本替换变量中的所有斜杠,反斜杠,单引号和双引号(可能在传递中):

' --> \'
" --> \"
\ --> \\
/ --> \/

此时,我用它来替换单引号:

${MYVAR//\'/\\\'}

但是,当我试图在一次通过中替换斜线,反斜线,单引号和双引号时,我就被困了。

1 个答案:

答案 0 :(得分:0)

你可以使用sed replace:

echo "'\"\\/" | sed "s~\(['\"\/]\)~\\\\\1~g"

根据评论编辑:

EXPLORE_FOLDER="/volume1/video/myMovies"
LS_LIST="$(ls --recursive "$EXPLORE_FOLDER")"
RESULT="$(sed "s~\(['\"\/]\)~\\\\\1~g" <<<"$LS_LIST")"
echo "$RESULT"

或者只是:

EXPLORE_FOLDER="/volume1/video/myMovies"
RESULT="$(ls --recursive "$EXPLORE_FOLDER" | sed "s~\(['\"\/]\)~\\\\\1~g" <<<"$LS_LIST")"
echo "$RESULT"