Regex 从bash脚本/函数中调用perl替换?
在我的Regex 从bash脚本/函数中调用perl替换?,regex,perl,bash,Regex,Perl,Bash,在我的bash_档案中我有: function ht() { perl -i -pe 's|<!-- Mirrored from (.*?) -->\n||' "$a" ;} 我得到: Can't open : No such file or directory. 我怀疑这是因为$a周围的引号干扰了正在输入的perl命令。也许它在文件名前面加上了“,或者是这种性质的东西,总的来说,它变成了错误的文件名 我尝试删除我的$a周围的双引号,但这似乎不符合我的要求。如何解决此问题?您
bash_档案中
我有:
function ht() { perl -i -pe 's|<!-- Mirrored from (.*?) -->\n||' "$a" ;}
我得到:
Can't open : No such file or directory.
我怀疑这是因为$a周围的引号干扰了正在输入的perl
命令。也许它在文件名前面加上了“
,或者是这种性质的东西,总的来说,它变成了错误的文件名
我尝试删除我的
$a
周围的双引号,但这似乎不符合我的要求。如何解决此问题?您必须告诉perl您尝试使用的文件。更改为:
function ht() { perl -i -pe 's|<!-- Mirrored from (.*?) -->\n||' "$@";}
function ht(){perl-i-pe的|\n | |'“$@”}
请注意结尾的
$@
而不是“$a”。正如@jwd所指出的,在大多数情况下,这甚至比$*
更好。您必须告诉perl您试图运行的文件。更改为:
function ht() { perl -i -pe 's|<!-- Mirrored from (.*?) -->\n||' "$@";}
function ht(){perl-i-pe的|\n | |'“$@”}
注意
$@
而不是“$a“最后。正如@jwd指出的,在大多数情况下,这甚至比$*
更好。哪里定义了$a
?我在你的代码中没有看到它。我认为$a
是命令行参数的神奇bash语法。我在另一个函数中使用它来做同样的事情。我想您指的是$@
。一般来说,就像你所说的,“$@”
。很好的捕获@jwd,我巧妙地将这一发现纳入了我的答案中。。。我已经决定@meder需要$*
,但没有注意到她试图用“$a”来代替。当你出现错误时,为什么不检查一下你的假设?哪里定义了$a
?我在你的代码中没有看到它。我认为$a
是命令行参数的神奇bash语法。我在另一个函数中使用它来做同样的事情。我想您指的是$@
。一般来说,就像你所说的,“$@”
。很好的捕获@jwd,我巧妙地将这一发现纳入了我的答案中。。。我已经决定@meder需要$*
,但没有注意到她试图用“$a”来代替。当你出现错误时,为什么不检查一下你的假设呢?请注意,$@
通常比$*
更可取,因为在引用时(如“$@
)它将正确处理包含空格的文件名。请注意,$@
通常优先于$*
,因为当引用时(如“$@”
),它将正确处理包含空格的文件名。