Je crée un script de mise à jour pour un projet, mais je suis confronté à un problème étrange dans sed (SLES 11 PL4). Dans la ligne ci-dessous, bash/sed est tout simplement pas étendre la variable, peu importe ce que je fais:sed non variable en expansion
oldvars=`sed -n '/#### Variables configurables ####/,/#### Variables configurables ####/p' ACCBackup.sh`; sed -i "/#### Variables configurables ####/,/#### Variables configurables ####/c\$oldvars" temp_ACCBackup.sh
écho aussi la variable fonctionne très bien:
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 ####
J'ai essayé de changer l'évasion « \ » , en mettant la variable dans '{}' s, mais aucun n'a aidé ... Cela devient de plus en plus bizarre comme j'essaye de nouvelles options. Le système met simplement le nom de la variable et non son contenu.
Quelqu'un peut-il m'aider s'il vous plaît?
peut être le '' \ '' après que la commande 'c' provoque le problème ... essayez d'utiliser' '\\' 'à la place ... si vous créez une entrée d'échantillon simple et affichez la sortie requise, vous pourriez obtenir mieux help ... Je pense que vous devriez utiliser la commande 'r' pour la robustesse – Sundeep
Pouvez-vous ajouter l'entrée et la sortie réelle/souhaitée, ainsi que le contenu de' oldvars'? –
Le shell remplace correctement la chaîne '\ $ oldvars' par la chaîne' $ oldvars'. Si vous voulez la valeur de la variable, vous ne devriez pas échapper le '$'. –