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

如何在Bash脚本中读取Python文件中的指定变量?

实现方案

这个需求完全可行,不用交互输入就能完成,以下是具体步骤和脚本示例:

1. 从只读Python文件提取变量值

通过grep和awk组合,可以精准提取config.py中iface变量的值,全程不会修改原文件:

# 提取iface的值,适配"iface = 'wlan1'"格式
IFACE_VALUE=$(grep -E "^iface\s*=\s*'" config.py | awk -F "'" '{print $2}')

如果config.py里的iface行有缩进,把正则改成^\s*iface\s*=\s*'即可。

2. 下载目标Bash脚本

用curl或wget下载新脚本,替换成你的实际下载地址:

# 示例:用curl下载到当前目录的new_script.sh
curl -o new_script.sh https://your-script-url.com/new_script.sh

3. 同步IWFACE变量到新脚本

用sed替换新脚本中IWFACE变量的取值,不管原脚本里是单引号、双引号还是无引号格式都能适配:

# 替换IWFACE的值,-i.bak会生成原文件的备份(可去掉.bak取消备份)
sed -i.bak "s/^IWFACE\s*=\s*['\"]\?.*['\"]\?/IWFACE='$IFACE_VALUE'/" new_script.sh

完整整合脚本

把以上步骤拼成可直接运行的Bash脚本:

#!/bin/bash

# 提取config.py中的iface值
IFACE_VALUE=$(grep -E "^iface\s*=\s*'" config.py | awk -F "'" '{print $2}')

# 检查提取是否成功
if [ -z "$IFACE_VALUE" ]; then
    echo "错误:没法从config.py里读到iface变量"
    exit 1
fi

# 下载新脚本
echo "正在下载新脚本..."
curl -o new_script.sh https://your-script-url.com/new_script.sh
if [ $? -ne 0 ]; then
    echo "错误:新脚本下载失败"
    exit 1
fi

# 同步变量
echo "把IWFACE设为:$IFACE_VALUE"
sed -i.bak "s/^IWFACE\s*=\s*['\"]\?.*['\"]\?/IWFACE='$IFACE_VALUE'/" new_script.sh

# 可选:删除备份文件
rm -f new_script.sh.bak

echo "操作完成"

注意点

  • 确保config.py中iface的格式和正则匹配,如果是双引号包裹,把grep里的'改成"即可
  • 如果新脚本里IWFACE的行有特殊格式(比如带注释),需要微调sed的匹配规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 21:12:43