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

含空格的Shell参数传递失败:双引号、转义字符等方法无效

解决方案

核心问题:未正确引用变量

你脚本的关键问题是最后一行传递$FP时没有用双引号包裹,shell会自动将变量中的空格作为参数分隔符,把带空格的路径拆成多个参数传给Python。

修复步骤:

  1. 给$FP加上双引号
    修改最后一行代码:

    sudo -u fishbones78 python3 "[MY PYTHON SCRIPT]" "$FP"
    

    双引号会保留变量中的空格、换行等特殊字符,确保整个路径作为单个参数传递。

  2. 替换ls的用法(更安全的替代方案)
    用ls处理文件名存在潜在风险(比如文件名包含换行符时会出错),推荐用ZSH的glob功能直接获取最新文件:

    # 按修改时间倒序排序,取第一个匹配的文件
    FP=($IN_DIR/reportname*(N.om[1]))
    

    解释一下glob参数:

    • N:如果没有匹配的文件,不报错(避免脚本中断)
    • o:对匹配结果排序
    • m:按文件修改时间排序(最新的在前)
    • [1]:取排序后的第一个文件

验证方法

修改后可以在脚本里加一行echo "传递的参数:$FP",或者在Python脚本里打印sys.argv,确认路径是作为单个参数接收的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:55:57