我有两个文件,spec 文件和 sh 文件。
spec 文件中的变量保存一个值。我希望将该变量的值分配给 sh 文件中的另一个变量。
spec 文件包含以下内容:
HOSTID=10
sh文件中有一个变量:
ACTIVE_HOSTID=
我在 spec 文件中使用了以下 sed 命令。
sed "s/$HOSTID/ACTIVE_HOSTID/g" spec_file>sh_file
谁能帮我解决这个问题?
编辑:
我的规范文件看起来像:
HOSTID=`ip addr | grep ether | awk '{print $2}' | head -n 1 | sed -e 's/\://g'`
我的 sh 文件看起来像:
ACTIVE_HOSTID=
BACKUP_SERVER_HOSTID=
EXTENDED_SUFFIX=
EXTRA_SYSPROPERTIES=
现在我需要从 HOSTID 获取 ACTIVE_HOSTID 的值。
编辑 2:
我尝试了以下方法:
sed -i "s/ACTIVE_HOSTID=.*/ACTIVE_HOSTID=HOSTID/" sh_file
它正在用字符串“HOSTID”而不是它的值替换 ACTIVE_HOSTID。 如果我使用像“$”这样的
sed -i "s/ACTIVE_HOSTID=.*/ACTIVE_HOSTID=$HOSTID/" sh_file
ACTIVE_HOSTID 还是空的
最佳答案
在 HOSTID
赋值之后将其放入 spec_file
中。
sed -i.bak "s/ACTIVE_HOSTID=.*/ACTIVE_HOSTID=$HOSTID/" sh_file
您的代码正在替换该行的 ACTIVE_HOSTID=
部分,但您想替换之后的部分。
关于regex - sed 命令 - 从 spec 文件中获取值并将其分配给 sh 文件中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46122924/