从bash脚本/函数中调用perl替换?

时间:2012-05-14 17:27:53

标签: regex perl bash

在我的bash_profile我有这个:

  function ht() { perl -i -pe 's|<!-- Mirrored from (.*?) -->\n||' "$a" ;}

我想运行ht对文件进行内联替换以删除带有HTTrack签名的HTML注释,但是当我运行它时,

ht file.html

我明白了:

Can't open : No such file or directory.

我怀疑这是因为$ a周围的引号干扰了perl命令的输入。也许它在"字面上加上文件名前缀,或者这种性质的东西,总的来说它变成了错误的文件名。

我尝试删除$a周围的双引号,但这似乎不符合我的要求。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

你必须告诉perl你正在尝试运行的文件。改为:

function ht() { perl -i -pe 's|<!-- Mirrored from (.*?) -->\n||' "$@";}

请注意$@而不是&#34; $ a&#34;在末尾。正如@jwd指出的那样,在大多数情况下,这比$*更好。