【发布时间】:2010-10-20 19:08:15
【问题描述】:
我正在编写一个 shell 脚本来编辑 宙斯盾的变更集属性。这 我正在使用的命令是:
aegis -Change_Attributes -Edit
打开一个vi编辑器来携带 出变化。我想做一个搜索 并替换:
s/brief_description \= \"none\"\;/brief_description \=\"测试\"/g
我可以将这些直接传递给 open vi 实例通过脚本没有 输入任何一个?我想保存 编辑后的文档 (:wq)。
附:该文件是一个临时文件 执行命令时创建所以 我不知道原来的路径
编辑:在这种情况下我可以使用 sed:
sed -e 's/brief_description\ \=\ \"none\"\;/brief_description\ \=\\"测试\"\;/g'
解决方案(不雅的黑客??) 是“cat”来自aegis的输出 (setenv VISUAL cat),修改out 用上面的命令放流和 将其保存到临时文件中,然后使用:
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 以使其评估为实际值?
EDIT3:
使用
sed -i 's%brief_description\ \=\ \"none\"\;%brief_description\ \=\ \"'"$DESC"'\"\;%g' temp_next.txt
工作。我将普通分隔符 (/) 替换为 % 并将环境变量放在双引号中。
【问题讨论】: