Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 从bash脚本/函数中调用perl替换?_Regex_Perl_Bash - Fatal编程技术网

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”来代替。当你出现错误时,为什么不检查一下你的假设呢?请注意,
$@
通常比
$*
更可取,因为在引用时(如
“$@
)它将正确处理包含空格的文件名。请注意,
$@
通常优先于
$*
,因为当引用时(如
“$@”
),它将正确处理包含空格的文件名。