【发布时间】:2013-02-08 21:27:32
【问题描述】:
我正在将一个显然是使用sed 的 GNU 实现编写的 sh 脚本移植到sed 的 BSD 实现。脚本中带有原始注释的确切行是:
# escape dot in file extension to grep it
ext="$(echo $ext | sed 's/\./\\./' -)"
我能够重现以下结果(显然我没有用尽ext 的所有可能性值):
ext=.h; ext="$(echo $ext | sed 's/\./\\./' -)"; echo [$ext]
使用 GNU 的 sed 实现,将返回以下内容:
[\.h]
使用 BSD 的 sed 实现返回以下内容:
sed: -: No such file or directory
[]
对于sed 的两个实现,执行ext=.h; ext="$(echo $ext | sed 's/\./\\./')"; echo [$ext] 返回[\.h]。
我查看了 GNU 和 BSD 的 sed 的手册页没有发现任何关于尾随“-”的信息。用“-”搜索sed 也不是很有成效。
“-”是错字吗?
$ext 的某些意外值是否需要“-”?
问题不在于sed,而是sh?
谁能告诉我我应该看什么,或者更好地解释一下“-”的目的是什么?
【问题讨论】: