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

如何编写Batch/Shell脚本向文本文件传递参数替换变量

没问题,我来给你分别讲讲Windows Batch脚本和Linux/macOS Shell脚本的实现方法,都是直接能上手用的:

Windows Batch 脚本实现

Batch脚本里我们可以借助延迟变量扩展来完成文本替换,下面是完整的脚本示例:

@echo off
setlocal enabledelayedexpansion

:: 检查是否传入了足够的参数
if "%~3"=="" (
    echo 请传入3个参数:param1 param2 params
    echo 示例用法:script.bat "John Doe" "New York" "paramA paramB"
    exit /b 1
)

:: 把传入的参数赋值给变量
set "param1=%~1"
set "param2=%~2"
set "params=%~3"

:: 逐行读取原文件内容并替换变量
set "content="
for /f "delims=" %%i in (example.txt) do (
    set "line=%%i"
    set "line=!line:{param1}=%param1%!"
    set "line=!line:{param2}=%param2%!"
    set "line=!line:{params}=%params%!"
    set "content=!content!!line!^n"
)

:: 将替换后的内容写入新文件(建议先备份原文件再考虑覆盖)
echo !content! > example_modified.txt

echo 替换完成,结果已保存到 example_modified.txt
endlocal

说明:

  • 脚本会先检查参数数量,不够的话会提示用法
  • 替换后的内容默认输出到example_modified.txt,如果要直接覆盖原文件,把最后一行的文件名改成example.txt即可,但记得先备份原文件
  • 如果参数里包含特殊字符(比如!、&),需要额外转义处理
Linux/macOS Shell 脚本实现

Shell环境下用sed命令做文本替换非常高效,下面是完整的脚本:

#!/bin/bash

# 检查参数数量是否正确
if [ $# -ne 3 ]; then
    echo "请传入3个参数:param1 param2 params"
    echo "示例用法:./script.sh 'John Doe' 'New York' 'paramA paramB'"
    exit 1
fi

# 赋值传入的参数
param1="$1"
param2="$2"
params="$3"

# 使用sed进行全局替换,输出到新文件
sed -e "s/{param1}/$param1/g" \
    -e "s/{param2}/$param2/g" \
    -e "s/{params}/$params/g" \
    example.txt > example_modified.txt

echo "替换完成,结果已保存到 example_modified.txt"

说明:

  • 如果要直接修改原文件(原地替换),可以给sed加上-i参数:
    • Linux系统:sed -i -e "s/{param1}/$param1/g" ... example.txt
    • macOS系统:sed -i '' -e "s/{param1}/$param1/g" ... example.txt
  • 如果参数里包含/这类特殊字符,可以替换sed的分隔符,比如用#:sed -e "s#{param1}#$param1#g"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:30:04