使用sed命令更新配置文件的键值时出现问题

时间:2014-03-04 09:19:21

标签: linux bash sed

使用以下bash脚本更新配置文件的键值

#!/bin/bash

ipaddr="192.168.0.1"
path="my/binary/file/path/version_op.bin"

sed -i "s/\("IP_ADDR" *= *\).*/\1$ipaddr/" config.txt

sed -i "s/\("PATH_N_FILENAME" *= *\).*/\1${path}/" config.txt

配置文件(config.txt)内容

IP_ADDR=192.168.0.1

PATH_N_FILENAME=NO_PATH

以上脚本仅适用于更新IP_ADDR,但当我为sed启用PATH_N_FILENAME时,它会显示以下错误。

sed: -e expression #1, char 35: unknown option to `s'

可能会出现此问题,因为path变量在路径中包含/并且它使sed处于混乱状态。但是什么问题仍然无法找到它。

有任何想法如何解决它?

1 个答案:

答案 0 :(得分:0)

在sed命令部分使用单引号:

sed -i 's/\("IP_ADDR" *= *\).*/\1$ipaddr/' config.txt