私はこれを他の場所で見つけましたが、私の要件に合ったものが見つかりませんでした。
次のテンプレートを使用する必要があります。
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\" "