【发布时间】:2017-03-08 02:06:31
【问题描述】:
我有一个名为 test 的脚本,我正在尝试接受一个参数并将反斜杠替换为正斜杠。如果我执行以下操作:
#!/bin/bash
FIRST_ARGUMENT=$1
echo $FIRST_ARGUMENT | sed 's/\\/\//g'
我是这样使用它的:
$ ./test aaa\aa
aaaaa
我的反斜杠消失了。有没有办法保存它们,以便它们被 sed 取代?当我在 echo 调用中将路径硬编码为字符串时,如下所示:
echo 'aaa\aa'| sed 's/\\/\//g'
我得到了正确的结果:
aaa/aa
【问题讨论】:
-
shell 在处理命令行时会解析反斜杠。您必须对它进行双重转义才能使转义生存下来,以便在命令“内部”使用。
-
用作:
./test 'aaa\aa' -
变量名也最好使用小写,以避免与大写的shell variables发生冲突