gpt4 book ai didi

linux - Linux bash 脚本中的 Perl 脚本

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

我在阅读其中遇到以下几行的 bash 脚本之一。我无法猜出以下这些行到底在做什么?谁能给我一些关于这些行到底在做什么的提示。我分别执行了这些行,但没有输出。我什至尝试使用断点。

ssh $HOST bash -e <<
'END' 2>&1 |
/usr/bin/perl -ne
'BEGIN { $|=1 } ;

if (/(bmake|create_dirs\.sh)\[\d+\] Leaving/)
{ --$indent };
print " "x($indent * 4), "$_" ;
if (/(bmake|create_dirs\.sh)\[\d+\] Entering/) { ++$indent }'

我期待着任何善意的回应。

谢谢

最佳答案

这是一个跟踪身份的脚本。在“离开”行,缩进减少,在“进入”行增加。然后我们看到根据缩进变量打印了空格。详细说明:

/usr/bin/perl -ne

-n旗帜放了一个 while(<>)循环脚本,这基本上使 perl 从标准输入或参数文件中读取。

BEGIN { $|=1 }

Autoflush 已打开。

if (/(bmake|create_dirs\.sh)\[\d+\] Leaving/) { --$indent };

这里的正则表达式查找诸如

之类的行
bmake[9] Leaving
create_dirs.sh[2] Leaving

找到后,$indent变量减 1。

print " "x($indent * 4), "$_" ;

这会打印一个空格,重复 4 * $indent次,然后是输入行。

if (/(bmake|create_dirs\.sh)\[\d+\] Entering/) { ++$indent }

这一行增加缩进的方法同上。

关于正则表达式的更多解释(参见 here,尽管我清理了该站点的语法):

NODE                     EXPLANATION
--------------------------------------------------------------------------------
( group and capture to $1:
--------------------------------------------------------------------------------
bmake literal string 'bmake'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
create_dirs\.sh literal string 'create_dirs.sh'
--------------------------------------------------------------------------------
) end of $1
--------------------------------------------------------------------------------
\[ literal string '['
--------------------------------------------------------------------------------
\d+ digits (0-9) (1 or more times (matching
the most amount possible))
--------------------------------------------------------------------------------
\] Leaving literal string '] Leaving'

关于linux - Linux bash 脚本中的 Perl 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14980132/

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