0
path=/tmp/a1

file=/tmp/a1/a.txt

file_without_path=`echo $file | sed s/'\/tmp\/a1'/''/g`

echo $file_without_path

在上面的代码中,我有一个问题

如果变量“路径”是一个允许用户自定义的动态变量

例如,用户将“路径”定义为 /usr/local/

然后我通过这个值进行搜索和替换

但是,如果我在没有任何干预的情况下传递这个值

该程序可能会将其视为echo $file | sed s//usr/local/''/g

我尝试使用tr -s '/' '\/'但不成功

我想问你如何解决这种情况

谢谢。

4

1 回答 1

1

“s”命令的分隔符sed不需要是/; sed 将使用 "s" 之后的任何内容作为分隔符:

sed s%'/tmp/a1'%''%g  ## no need to worry about escaping slashes any more
于 2013-07-20T14:29:23.980 回答