sed中传递变量进行替换

sed命令中传递变量

例如:修改配置文件某一个变量的值

配置文件如下:

toney@ubantu:/mnt/hgfs/em嵌入式学习记录/shell/shell脚本常见用法$ cat common_usage.log 
PRODUCT_TYPE=NGFW_V2_3
PLATFORM=x86_64
NGTOS_VERSION=v2.2.94
NGFW_PATCH_VERSION=v2.2.94
DLP_PKT_VERSION=
VERSION=NGFW_V2_3_2020-04-20
SOURCE_TAG=trunk
REVISION=				--------->尝试修改此属性的值
IS_TAG=false
OEM=TOPSEC
AUTOMAKE_USER_NAME=chen_kang
SPECIAL_UPDATE=no
SPECIAL_SOURCE_BRANCH=
SPECIAL_SOURCELIST_FILE=
HAVE_ROOT=true
IS_SM=false
HAVE_ASAN=false
ONLY_HAVE_ASAN=false
IS_BIG_PRODUCE=no
IS_VERSION_INS=no
MIN_REVISION=$version
MAX_REVISION=$version
IS_REBUILD=no
IS_KERNEL_BUILD=no
DAILY_CONFIG_UPDATE=NO

脚本函数如下:

modifyConfig(){
	FILE="common_usage.log"
	version="linux-4.1.23"
	#正常的做法
	#以”REVISION=“开始的行全部替换为”REVISION=$version“
	sed -i 's/REVISION=.*$/REVISION=$version/' $FILE	
}

结果真的是替换为“REVISION=$version”…

可行的办法如下:

只需要将单引号改为双引号

#########################################################################
# File Name: common_usages.sh
# Author: Toney Sun
# mail: [email protected]
# Created Time: 2020年04月20日 星期一 15时03分23秒
#########################################################################
#!/bin/bash

modifyConfig(){
	FILE="common_usage.log"
	version="linux-4.1.23"
	#正常的做法-->不可行
	#以”REVISION=“开始的行全部替换为”REVISION=$version“
	#sed -i 's/REVISION=.*$/REVISION=$version/' $FILE
	
	#可行办法
	sed -i “s/REVISION=.*$/REVISION=$version/” $FILE
}
modifyConfig

结果如下:

PRODUCT_TYPE=NGFW_V2_3
PLATFORM=x86_64
NGTOS_VERSION=v2.2.94
NGFW_PATCH_VERSION=v2.2.94
DLP_PKT_VERSION=
VERSION=NGFW_V2_3_2020-04-20
SOURCE_TAG=trunk
REVISION=linux-4.1.23		-------------------------->Here
IS_TAG=false
OEM=TOPSEC
AUTOMAKE_USER_NAME=chen_kang
SPECIAL_UPDATE=no
SPECIAL_SOURCE_BRANCH=
SPECIAL_SOURCELIST_FILE=
HAVE_ROOT=true
IS_SM=false
HAVE_ASAN=false
ONLY_HAVE_ASAN=false
IS_BIG_PRODUCE=no
IS_VERSION_INS=no
MIN_REVISION=linux-4.1.23
MAX_REVISION=linux-4.1.23
IS_REBUILD=no
IS_KERNEL_BUILD=no
原创文章 96 获赞 73 访问量 6万+

猜你喜欢

转载自blog.csdn.net/s2603898260/article/details/105637408