我正在编写一个 shell 脚本来编辑 aegis 的 Change-Set 属性。我正在使用的命令是:
aegis -Change_Attributes -Edit
这将打开一个 vi 编辑器来执行更改。我想做一个搜索和替换:
s/brief_description \= \"none\"\;/brief_description \=
\"测试\"/g
我可以通过脚本将这些直接传递给打开的 vi 实例而不输入任何内容吗?我想在编辑后保存文档(:wq)。
PS该文件是执行命令时创建的临时文件所以我不知道原始路径
编辑:我可以在这种情况下使用 sed:
sed -e 's/brief_description\ \=\ \"none\"\;/brief_description\ \=\
\"测试\"\;/g'
解决方案(不雅黑客??)将是“cat”来自aegis(setenv VISUAL cat)的输出,使用上述命令修改输出流并将其保存到临时文件,然后使用:
aegis -change_attributes -file <temp file>
EDIT2:我几乎让它工作了。但是我的使用方式有问题sed
我的脚本中有以下行:
sed -i 's/brief_description\ \=\ \"none\"\;/brief_description\ \=\ \"${DESC}\"\;/g' temp_next.txt
但是 $DESC 变量不会计算出它的值,并且输出如下:
Brief_description = "${DESC}";
如何将 DESC 传递给 sed 以评估其实际值?
编辑3:
使用
sed -i 's%brief_description\ \=\ \"none\"\;%brief_description\ \=\ \"'"$DESC"'\"\;%g' temp_next.txt
工作。我将普通分隔符 (/) 替换为 % 并将环境变量放在双引号中。