我编写了一个shell脚本,它读取文件并获取执行特定任务所需的文件路径,但如果文件路径包含任何特殊字符,则不会采用完整路径
例如路径是\ web \ take \ ab 我得到的值是\ web ake \ ab这里它将\ t作为标签处理并打印标签,以便如何避免这种情况
我的代码是
grepresult = grep "Cannot " input.txt | cut -f 2,3 -d":"
echo $ grepresult
所以请帮助我如何将特殊字符放入字符串
答案 0 :(得分:1)
在符合POSIX标准的shell中,除了一些例外情况,默认情况下会启用反斜杠的解释。
你知道的问题是,shell以其特殊含义解释\
。要在输出中加上反斜杠,只需反斜杠即可。
<强>输入强>
$ grepresult="sometestt\n\b\a"
<强>脚本强>
echo "${grepresult//\\/\\\\}"
#since \ has special meaning here as well, `\\` makes the character `\`
应该做的伎俩。在Shell Parameter Substitution中查找${var//Pattern/Replacement}
。
<强>输出强>
$ echo "${grepresult//\\/\\\\}"
sometestt\n\b\a
答案 1 :(得分:0)
特殊字符在变量grepresult
中正确存储,echo
将\t
转换为TAB
尝试:
echo -E $grepresult
其中-E
阻止echo
执行反斜杠转义