含空格的Shell参数传递失败:双引号、转义字符等方法无效
解决方案
核心问题:未正确引用变量
你脚本的关键问题是最后一行传递$FP时没有用双引号包裹,shell会自动将变量中的空格作为参数分隔符,把带空格的路径拆成多个参数传给Python。
修复步骤:
给
$FP加上双引号
修改最后一行代码:sudo -u fishbones78 python3 "[MY PYTHON SCRIPT]" "$FP"双引号会保留变量中的空格、换行等特殊字符,确保整个路径作为单个参数传递。
替换
ls的用法(更安全的替代方案)
用ls处理文件名存在潜在风险(比如文件名包含换行符时会出错),推荐用ZSH的glob功能直接获取最新文件:# 按修改时间倒序排序,取第一个匹配的文件 FP=($IN_DIR/reportname*(N.om[1]))解释一下glob参数:
N:如果没有匹配的文件,不报错(避免脚本中断)o:对匹配结果排序m:按文件修改时间排序(最新的在前)[1]:取排序后的第一个文件
验证方法
修改后可以在脚本里加一行echo "传递的参数:$FP",或者在Python脚本里打印sys.argv,确认路径是作为单个参数接收的。
内容的提问来源于stack exchange,提问作者Fishbones78
相关产品推荐
相关产品推荐

