You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Shell脚本P2识别输入重定向以调用不同参数的Python脚本

解决方案

核心判断逻辑

在Shell环境中,可通过[ -t 0 ]检测标准输入(文件描述符0)是否连接到终端:

  • 返回真(退出码0):输入来自终端,无重定向
  • 返回假(退出码非0):输入被重定向(来自文件、管道等)

完整P2 Shell脚本

#!/bin/bash

# 处理带文件名参数的情况
if [ $# -eq 1 ]; then
    python P2.py "$1"
else
    # 判断输入是否被重定向
    if ! [ -t 0 ]; then
        # 传递重定向的输入给Python脚本
        python P2.py <&0
    else
        # 无参数且无重定向的情况
        python P2.py
    fi
fi

代码说明

  1. #!/bin/bash:指定脚本使用bash解释器
  2. [ $# -eq 1 ]:判断命令行参数数量为1,对应P2 someFile的调用场景
  3. ! [ -t 0 ]:取反判断标准输入非终端,对应P2 < someFile的重定向场景
  4. <&0:将当前脚本的标准输入直接传递给Python脚本,无需显式指定文件名(重定向的文件名由调用者指定,脚本无需感知)

验证方式

  • 执行./P2:触发无参数无重定向逻辑,调用python P2.py
  • 执行./P2 test.txt:触发带参数逻辑,调用python P2.py test.txt
  • 执行./P2 < test.txt:触发重定向逻辑,将test.txt内容传入python P2.py

内容的提问来源于stack exchange,提问作者wolfeweeks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 07:40:32