shell 特殊字符转义方案

shell 特殊字符转义方案

当变量中有特殊字符,被引用时会被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\'\|


good good study, day day up!

发表评论

textsms
account_circle
email

shell 特殊字符转义方案
当变量中有特殊字符,被引用时会被shell解释器直接解析,所以需要转义,如果是单个或临时使用时直接加\或单引号即刻,但被脚本引用时就很尴尬了 常见转移字符: \' \" \* \? \\ \~ …
扫描二维码继续阅读
2022-08-04