Script Bash para preencher um modelo

1

Procurei isso em outro lugar, mas não consegui encontrar algo que correspondesse aos meus requisitos.

O modelo abaixo é o que eu preciso usar:

dn: uid=$1,ou=home,dc=chan,dc=com

objectClass: organizationalPerson

objectClass: person

objectClass: inetOrgPerson

objectClass: top

cn: $2

sn: $3

userid: $1

userPassword:

Eu preciso script de tal forma que preencha os campos a seguir $ 1, $ 2, $ 3, $ 4 com a entrada que eu dou e, em seguida, saídas para um novo arquivo, permitindo assim executá-lo usando o modelo em branco.

    
por user1380599 16.10.2015 / 18:54

2 respostas

7

Suspeito que você esteja procurando algo bastante simples, como um arquivo my_script que contém:

cat <<<XXX
dn: uid=$1,ou=home,dc=chan,dc=com

objectClass: organizationalPerson

objectClass: person

objectClass: inetOrgPerson

objectClass: top

cn: $2

sn: $3

userid: $1

userPassword:
XXX

Para usar o acima, basta executar:

sh my_script fred 100 200

que será enviado para o stdout (e pode ser redirecionado para um arquivo).

    
por 16.10.2015 / 19:10
3

Existe realmente necessidade de ser um arquivo de modelo?

#!/bin/bash

echo "dn: uid=$1,ou=home,dc=chan,dc=com" > $4
echo "objectClass: organizationalPerson" >> $4
echo "objectClass: person" >> $4
echo "objectClass: inetOrgPerson" >> $4 
echo "objectClass: top" >> $4
echo "cn: $2" >> $4
echo "sn: $3" >> $4
echo "userid: $1" >> $4
echo "userPassword:" >> $4

Você executaria ./SCRIPTNAME Valor1 Valor2 Valor3 OutputFileName

caso contrário

Seu roteiro seria:

#!/bin/bash

var1=$1
var2=$2
var3=$3
file=$4

cat TemplateFile > $file

sed -i "s/1/$var1/g" $file
sed -i "s/2/$var2/g" $file
sed -i "s/3/$var3/g" $file

e seu arquivo de modelo seria

dn: uid=1,ou=home,dc=chan,dc=com 
objectClass: organizationalPerson
objectClass: person
objectClass: inetOrgPerson
objectClass: top
cn: 2
sn: 3
userid: 1
userPassword: 
    
por 16.10.2015 / 19:21