我删除了变量的最后一个斜杠:
v="/my/path/"
echo $v | sed 's/\/$//' # echoes /my/path
现在我想删除变量末尾的模式。此模式应在另一个变量中设置:
pattern="/"
v="/my/path/"
echo $v | sed 's/"$pattern"$//' # echoes /my/path/
它不起作用。我尝试逃避特殊字符,例如" /" :
echo $v | sed 's/\"$pattern"$//' # echoes /my/path/
没有预期结果。
我该怎么办?
答案 0 :(得分:3)
单引号内没有参数扩展,但在双引号内。 使用
sed "s,$pattern\$,,"
但是,要从变量的末尾删除模式,为什么不使用shell的机制呢?这避免了昂贵的分叉和管道:
$ v="/my/path/"
$ echo ${v%/}
/my/path
这也适用于另一个持有模式的变量:
$ pattern="/"
$ echo ${v%$pattern}
/my/path