【问题标题】:How can I tell if my Perl program is part of a shell logical operation?如何判断我的 Perl 程序是否是 shell 逻辑操作的一部分?
【发布时间】:2019-10-24 00:03:39
【问题描述】:

要检查 Perl 脚本是否以“交互方式”运行(不是管道的一部分),我们可以使用 -t STDOUT 检查,例如在:

% my-script

t STDOUT 为真,而在:

% my-script | grep foo

-t STDOUT 为假。

是否有(简单)方法来检查脚本是否“作为简单命令”运行,即不是多命令逻辑序列的一部分,例如:

% my-script && echo "success"
% my-script || echo "failed"

【问题讨论】:

  • 简答:不,没有。
  • 如果你知道这个你会怎么做?
  • 我想根据是否访问我的 CLI 以不同的方式输出,例如:image-is-landscape foo.jpg vs image-is-landscape foo.jpg && mv foo.jpg foo-landscape.jpg。在第一种情况下,除了返回适当的退出代码之外,我还想输出一条消息“图像是风景”。
  • 我现在采用grep 的方式使用-q 选项让用户抑制输出。

标签: bash shell perl


【解决方案1】:

实际上,您是在询问是否有办法检查父进程是否会检查返回值。没有办法知道另一个进程将来会做什么或不会做什么。

【讨论】:

    猜你喜欢
    • 2012-03-28
    • 2011-11-17
    • 2018-01-12
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 2012-03-15
    相关资源
    最近更新 更多