需求

        在测试过程中,有很多配置项是写在文件中的,这时想通过脚本来改文件内容,这是个很常见的需求

问题

        sed 是linux里很强大好用的文本修改工具,但是在使用过程中,需要在shell里的sed语句中引用变量,此时有一点小问题,$符号sed自身可以解析,所以会在sed语句中做转义,导致后边的参数名不在表示一个变量

解决

        sed命令使用单引号的情况下,可以使用'"$VAR"'引用(单引号,然后双引号,变量),做转义

#!/bin/bash
FILE="/usr/local/sed_test.file"

# 查找行数
LINE=`sed -n '/G_num =/=' $FILE`

#传入参数 必须为数字
if [ -z $1 ];then
    echo "args is null"
    exit
fi
tmp=`echo $1|sed 's/[0-9]//g'`
[ -n "${tmp}" ]&& { echo "Args must be integer!";exit 1; }

# 创建替换行 

new_line="G_num = "$1 
echo $new_line $LINE
# a="("$LINE")i\\"$new_line""
sed -i ''"$LINE"'c\\'"$new_line"'' $FILE
if [ $? -eq 0 ];then
        echo "finished"
fi

参考: sed引用变量

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐