템플릿 작성을 위한 Bash 스크립트

템플릿 작성을 위한 Bash 스크립트

나는 이것을 다른 곳에서 찾았지만 내 요구 사항에 맞는 것을 찾을 수 없었습니다.

다음 템플릿을 사용해야 합니다.

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

objectClass: organizationalPerson

objectClass: person

objectClass: inetOrgPerson

objectClass: top

cn: $2

sn: $3

userid: $1

userPassword:

다음 필드 $1, $2, $3, $4를 내가 제공한 입력으로 채운 다음 새 파일로 출력하여 빈 템플릿으로 실행할 수 있도록 스크립트를 작성해야 합니다.

답변1

my_script나는 당신이 다음을 포함하는 파일 과 같이 매우 간단한 것을 찾고 있다고 생각합니다 .

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

위의 내용을 사용하려면 다음을 실행하세요.

sh my_script fred 100 200

표준 출력으로 출력됩니다(파일로 리디렉션될 수 있음).

답변2

템플릿 파일이 실제로 필요한가요?

#!/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

./SCRIPTNAME Value1 Value2 Value3 OutputFileName을 실행합니다.

그렇지 않으면

귀하의 스크립트는 다음과 같습니다

#!/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

귀하의 템플릿 파일은

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

답변3

비슷한 문제를 해결했습니다

우아하고 짧은 솔루션perl

perl변수를 해당 값으로 바꾸는 데 사용됩니다 .

export world=World beautiful=wonderful
echo 'I love you, $world! You are $beautiful.' >my_template.txt
perl -pe 's|\$([A-Za-z_]+)|$ENV{$1}|g' my_template.txt

출력: I love you, World! You are wonderful.

my_template.txt접두사가 붙은 변수를 포함할 수 있습니다 $.

답변4

논의한 대로 eval이 작업은 다음 명령을 사용하여 수행할 수도 있습니다.여기

source $config_file
template_str=`cat "$template_file"`
eval "echo \"$template_str\" "

관련 정보