Bash - 替换转义字符



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

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

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

${MYVAR//'/\'}

但是当我试图一次性替换斜杠、反斜杠、单引号和双引号时,我陷入了困境。

您可以使用 sed 替换:

echo "'"\/" | sed "s~(['"/])~\\1~g"
  • sed 命令的简短说明
  • SED 手册页

根据评论进行编辑:

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"

最新更新