sed在shell脚本中引用变量
#!/bin/bashFILE="./network_behavior_data_cli"#FILE="/usr/local/bin/network_behavior_data_cli"LINE=`sed -n '/G_num =/=' $FILE`if [ -z $1 ];thenecho "args is null"exitfitmp=`echo $1|sed 's/[0-9]//g'`[ -
·
需求
在测试过程中,有很多配置项是写在文件中的,这时想通过脚本来改文件内容,这是个很常见的需求
问题
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引用变量
更多推荐
已为社区贡献1条内容
所有评论(0)