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 e acrescentar algumas coisas dentro desses dados no início e no final:
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:
%código%
- $ id será o número:
/home/david/data/12345678
- $ type_of_client será a palavra separted do espaço:
120
Agora, dentro desta localização abc def pqr
, tenho arquivos como este: /home/david/data/12345678
, abc_lop.xml
e def_lop.xml
. O significado pqr_lop.xml
será sempre o mesmo, para que possamos codificar isso. Nós só precisamos iterar _lop.xml
variable e fazer um nome de arquivo como mostrado acima e ler todo o arquivo em uma String por enquanto (ou pode ser se houver alguma outra maneira melhor). Eu comecei a trabalhar como mostrado abaixo:
#!/bin/bash
readonly file_location=$location
readonly client_id=$id
readonly client_types=$type_of_client
for word in $client_types
do
echo $word
file_value='cat "file_location"/"$word"_lop.xml'
echo $file_value
done
Agora preciso fazer algo especial, como manipulação de string no shell script, e não sei como podemos fazer isso. Agora, qualquer que seja o valor que lermos desses arquivos, eu preciso acrescentar algo no topo dele e algo no final dele em todos os arquivos que estamos lendo. Eu preciso fazer exatamente a mesma coisa mostrada abaixo:
Por exemplo: se o arquivo client_types
for assim depois de visualizá-lo usando abc_lop.xml
:
<Hello version="100">
<!-- some stuff here -->
</Hello>
Eu preciso fazer assim:
<hello_function>
<name>Data</name>
<Hello version="100">
<!-- some stuff here -->
</Hello>
</hello_function>
Como você pode ver, adicionei isso na parte superior vi
e adicionei isso na parte inferior <hello_function><name>Data</name>
. Como podemos fazer isso no script de shell?
Portanto, em geral, </hello_function>
deve imprimir acima dos valores indicados para cada um desses echo $file_value
:
#!/bin/bash
readonly file_location=$location
readonly client_id=$id
readonly client_types=$type_of_client
for word in $client_types
do
echo $word
file_value='cat "file_location"/"$word"_lop.xml'
// may be do something here?
echo $file_value // this should print out appended string value both at top and bottom.
done
Cada um desses arquivos XML terá menos de 10 MB, com certeza.