我正在为项目创建脚本更新程序,但我在sed中遇到了一个奇怪的问题(使用SLES 11 PL4)。在下面的行中,无论我做什么,bash / sed都不会扩展变量:
oldvars=`sed -n '/#### Variables configurables ####/,/#### Variables configurables ####/p' ACCBackup.sh`; echo $oldvars #### Variables configurables #### para='/mnt/BackupBBDD' # DIRECTORIO DESTINO compartido=TRUE # VAMOS A MONTAR ALGUN RECURSO COMPARTIDO? 'TRUE' O 'FALSE' compartido_externo='//IP/recurso' # RECURSO EN MAQUINA EXTERNA compartido_usuario='xxxx' # USUARIO PARA EL RECURSO COMPARTIDO compartido_contrasena='yyyy' # CONTRASENA PARA EL RECURSO COMPARTIDO #### Variables configurables ####
同样回显变量也可以正常工作:
{{1}}
我尝试更改转义'\',将变量放在'{}中,但没有一个帮助......当我尝试新的选项时,这变得更加怪异。系统只是简单地放置变量名而不是其内容。
有人能帮助我吗?
答案 0 :(得分:1)
或者,您可以使用以下内容:
OLDVAR=abc
NEWVAR=xyz
sed -i 's/'"$OLDVAR"'/'"$NEWVAR"'/g' filename
每次都适合我。
答案 1 :(得分:0)
在变量之前添加另一个\
。
\\$oldvars
当您使用单\
时,$
被转义,$oldvars
成为普通字符串而非变量。