Estou trabalhando em um script de shell que está obtendo dados de outro programa e estou usando esse valor de variável para ler o conteúdo do arquivo que continua anexando a arquivos diferentes após algumas modificações:
Abaixo está um exemplo:
readonly file_location=$location
readonly client_id = $id
readonly client_types = $type_of_client
Aqui, o valor $ location, $ id e $ type_of_client está sendo passado de outro programa. Abaixo está um exemplo:
$ location será o nome do caminho completo como este: /home/david/data/12345678
$ id será o número: 120
$ type_of_client será espaço separted word: abc def pqr
Agora, dentro desta localização /home/david/data/12345678
, tenho arquivos como este: abc_lop.xml
, def_lop.xml
e pqr_lop.xml
. O significado _lop.xml
será sempre o mesmo, para que possamos codificar isso. Precisamos apenas iterar client_types
variable e criar um nome de arquivo como mostrado acima e anexar cabeçalho e rodapé a esse arquivo e criar um novo. Então eu consegui esta parte funcionando bem com o código abaixo:
#!/bin/bash
readonly file_location=$location
readonly client_id=$id
readonly client_types=$type_of_client
client_value='cat "$file_location/client_$client_id.xml"'
for word in $client_types; do
fn="${word}"_new.xml
echo "$word"
echo '<hello_function>' >>"$fn"
echo '<name>Data</name>' >>"$fn"
cat "$file_location/${word}_lop.xml" >>"$fn"
echo '</hello_function>' >>"$fn"
done
Agora, a segunda coisa que preciso fazer é: Eu tenho um outro arquivo xml que é client_$client_id.xml
. Preciso copiar meu arquivo _new.xml
gerado em client_$client_id.xml
em um determinado local. Abaixo está minha client_120.xml
em que preciso adicionar meu arquivo _new.xml
gerado. Eu preciso substituir todo função abaixo com o meu arquivo _new.xml
gerado.
<?xml version="1.0"?>
<!-- some data -->
<function>
<name>TesterFunction</name>
<datavariables>
<name>temp</name>
<type>string</type>
</datavariables>
<blocking>
<evaluate>val = 1</evaluate>
</blocking>
</function>
</model>
</ModelMetaData>
Então, se este for meu arquivo _new.xml
gerado: Eu preciso copiar todo esse arquivo para o arquivo acima e substituir todo o TesterFunction
por ele.
<hello_function>
<name>Data</name>
<Hello version="100">
<!-- some stuff here -->
</Hello>
</hello_function>
A saída final será assim:
<?xml version="1.0"?>
<!-- some data -->
<hello_function>
<name>Data</name>
<Hello version="100">
<!-- some stuff here -->
</Hello>
</hello_function>
</model>
</ModelMetaData>