gpt4 book ai didi

bash - 请帮我解密这行 bash 脚本代码

转载 作者:行者123 更新时间:2023-11-29 09:48:42 25 4
gpt4 key购买 nike

这是什么意思?

  h2t=$((exec 2>&-; (which lynx >/dev/null && echo lynx -stdin -dump) \
|| which html2text || which cat) |tail -n 1)

好的,h2t=... 表示它正在设置一个变量。

我以为双括号是用于算术运算的。如果是这样的话,我在那里看不到任何算术,而且我完全感到困惑。

当然,那行代码上面有一个15行的注释 block ,解释了意图。不幸的是,注释是古苏美尔语的 unicode 版本,我无法解释它。

**开玩笑的!没有评论。

附录:来自https://github.com/micha/resty/blob/master/resty

最佳答案

twalberg在对我的回答的评论中发现了它。事实证明,外部 $() 分配了一个命令行,具体取决于可能能够将 HTML 转换为文本的各种工具的可用性。

因此 h2t 包含 lynx -stdin -dump 命令行,或者失败(即 lynx 不可用), html2text 或作为最后的手段 cat。后两者的命令来自 which 调用,前者的命令来自 echo


它将 HTML 转换为来自标准输入的文本。

让我们把它分开。

  • exec 2>&- 在子 shell 中设置重定向(关闭 stderr,IIRC)
  • 下一个子子 shell 尝试查看是否安装了 lynx 并运行它,从 stdin 获取输入。
  • || 之后的其他部分意义不大,因为它们只评估是否安装了 html2textcat,但不运行它们
  • 然后我们从第一个子 shell 中获取最后一行

从头开始。因为它是一个echo,所以它什么都不做。对我来说就像原型(prototype)制作。

将其拆开以提高可读性:

$(
exec 2>&-
(
which lynx >/dev/null &&
echo lynx -stdin -dump
) ||
which html2text ||
which cat
) |
tail -n 1
)

关于bash - 请帮我解密这行 bash 脚本代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15348696/

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