나는 이것을 다른 곳에서 찾았지만 내 요구 사항에 맞는 것을 찾을 수 없었습니다.
다음 템플릿을 사용해야 합니다.
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\" "