如何通过Bash脚本传递参数运行Python脚本?
解决Bash传递带空格参数给Python脚本的问题
你的脚本存在几个关键问题,导致无法正确传递参数:
- 多个未定义变量:
$hours、$hour、$full均未赋值,运行时会输出空值或报错 - 手动拼接引号的方式错误:把单引号作为字符串内容拼入变量,传递时Bash会将空格视为参数分隔符,导致带空格的时间被拆分成多个无效参数
以下是修正后的脚本,完全匹配你终端手动执行的效果:
#!/bin/bash # 获取当前时间,格式为"YYYY-MM-DD HH:MM" current_time=$(date +"%Y-%m-%d %H:%M") # 获取1小时前的时间 one_hour_ago=$(date -d "1 hour ago" +"%Y-%m-%d %H:%M") # 可选:验证变量内容 echo "当前时间: $current_time" echo "1小时前时间: $one_hour_ago" # 正确传递参数:用双引号包裹带空格的变量,确保作为单个参数传递 python3 stw_apiv6.py -E var1 -a "$current_time" -b "$one_hour_ago" -r yes
关键说明:
- 变量定义:直接通过
date命令生成带空格的时间字符串,无需手动拼接引号 - 参数传递:用双引号
"$变量名"包裹带空格的变量,Bash会将整个变量值作为单个参数传递,和你在终端输入-a '2023-10-19 16:00'的效果完全一致 - 如果你需要调整参数(比如用其他时间作为
-a或-b的值),只需修改对应的变量赋值即可
内容的提问来源于stack exchange,提问作者Christian Mantilla
相关产品推荐
相关产品推荐

