gpt4 book ai didi

linux - 在perl中连接linux命令内的变量

转载 作者:太空宇宙 更新时间:2023-11-04 05:11:55 25 4
gpt4 key购买 nike

我需要使用系统命令(grep),该命令有一个与字符串连接的变量作为正则表达式来搜索文件。是否可以在 Perl 中的变量和字符串之间连接 grep 的正则表达式??

我尝试使用 . 运算符,但不起作用。

if(`grep -e "$fubname._early_exit_indicator = 1" $golden_path/early_exit_information.tsv`){
print "-D- The golden data indicates early exit should occur\n";
$golden_early_exit_indicator=1;
}

预计与正则表达式匹配,“$fubname._early_exit_indicator = 1”,但不符合要求。预期结果应该是:-D- 黄金数据表明应该提前退出但在当前的代码中,它不会打印此内容。

输出链接:( https://drive.google.com/open?id=1N0SaZ-r3bYPlljKUgTOH5AbxCAaHw7zD )

最佳答案

问题是 . 运算符未被识别为引号内的运算符。点运算符在字符串之间使用,而不是在字符串内部使用。使用字符串内的点按字面意思插入。模式中的这个文字点会导致代码中的 grep 命令失败。

另请注意,在引号内,Perl 尝试使用某些标识符解析规则来插入变量。请参阅perldoc perlop有关 Perl 中使用的不同类型的引用,请参阅 perldoc perldata有关标识符解析规则的信息。

总之,为了在反引号参数中插入变量 $fubname,请使用

"${fubname}_early_exit_indicator = 1"

请注意,我们需要将标识符括起来,因为下面的下划线是有效的标识符字符。 (相反,文字点不是有效的标识符字符,因此如果后面的字符是文字​​点,则不需要在标识符周围使用大括号。)

关于linux - 在perl中连接linux命令内的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54340126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com