当变量中有特殊字符,被引用时会被shell解释器直接解析,所以需要转义,如果是单个或临时使用时直接加\或单引号即刻,但被脚本引用时就很尴尬了
常见转移字符:
\'
\"
\*
\?
\\
\~
\`
\!
\#
\$
\&
\|
\{
\}
\;
\<
\>
\^
思路很简单,使用sed进行替换
#[] 为匹配中括号内任意字符
#”’“ 使用双引号转义单引号
#‘“’ 使用单引号转义双引号
#‘|’ 使用单引号转义管道符
#以次类推自己发散思维
sed "s/["'"'"'*?\~&{};<>^'|']/\\\&/g"
如8ik,*UJM,转义后结果为:8ik,*UJM
[root@ffing ~]#echo 8ik,*UJM |sed "s/['"*?\~'s/['"*?\~&|{};<>^]/\\\&/g"
8ik,\*UJM
#########################################################
[root@ffing ~]# VAR="ffing'"
[root@ffing ~]# echo "$VAR"|sed "s/["'"'"'*?\~&{};<>^]/\\\&/g"
ffing\'
[root@ffing ~]# VAR='ffing"'
[root@ffing ~]# echo "$VAR"|sed "s/["'"'"'*?\~&{};<>^'|']/\\\&/g"
ffing\"
[root@ffing ~]# VAR="ffing'|"
[root@ffing ~]# echo "$VAR"|sed "s/["'"'"'*?\~&{};<>^'|']/\\\&/g"
ffing\'\|
发表评论