2017-11-08 18 views
0

設定ファイルに基づいてタスクを実行できるbashスクリプトを作成しようとしています(データベースバックアップを作成しています)。私は.envファイルからDB_NAME、DB_PASSWORD、DB_USER、DB_HOSTのような変数を読み込もうとしています。 BASH |他のファイルから変数を取得する

#!/bin/bash 

for dir in */ ; do 
    echo "Check for environment file in $dir"; 

    if [ -e "$dir/.env" ]; then 
     source $dir/.env 
     echo "Database: $DB_NAME" 
    else 
     echo "Environment file not found, skipping.." 
    fi 

    echo "---" 
done 

これまでのところ、それが働いている:

は、私は、次のコードを持っています。しかし、正しくフォーマットされていない変数についてはエラーが発生しており、変更できません。

.envファイル:

DB_NAME=zgwb 
DB_USER=root 
DB_PASSWORD= 
DB_HOST=localhost 
WP_ENV=development 
WP_HOME=http://zgwb.app 
WP_SITEURL=${WP_HOME}/wp 

AUTH_KEY=Jg.Q(zUJL_Mva+Fg&[email protected]/4-I9|nffhW]Hdu){7c}YH=CSDZ$bGL??tH7sU$y 
SECURE_AUTH_KEY=2wj:zE^l?*/Xl~}4tLEu*&t&/[email protected]~K*<p%LB4x,{9ygOcAr|>1p/#48g 
LOGGED_IN_KEY=pD#e%R=+tDt]1m9xL^@Nc~N+R3~quYwJ>:O3NHV7!%Sz>oWA`u$,ko{1*$(?ybIn 
NONCE_KEY=?]&Mrzg~aYo~$!p3=`XdeI5_iK-GMqTKax[rW`gXPvMp,1)}RD~W#UE_+moDC8%D 
AUTH_SALT=,YUPP1a+]Mg&b}2TqRc`|[email protected]+T<v_W:mPU6=/v=>gE;[G_M}?+>~`v0-%OcX/|9MU 
SECURE_AUTH_SALT=DERZxF51AP;i>-h(8/8`XQ5|Tq:S}Jaq%R^?]I0l]Vt#CBR?yn~[3U[k!(2Xp2%` 
LOGGED_IN_SALT=hQ~+}Qc!|wJBY<A]ap64!P%IvE=L.6Cbkr,/8;77sd:&+w0=MuWj!yR,3JEXd6Zo 
NONCE_SALT={SlTN(n5[jI$G:5(qp>>OG-e&l1)*n.35gjg{[email protected]$ebTuqHj4%`8Rbxy)KtJd 

私が受けてるのエラーがある: - 16かそこら

zgwb//.env: line 9: syntax error near unexpected token `(' 
zgwb//.env: line 9: `AUTH_KEY=Jg.Q(zUJL_Mva+Fg&[email protected]/4-I9|nffhW]Hdu){7c}YH=CSDZ$bGL??tH7sU$y' 

誰もが、私はライン9をスキップできるか知っていますか?私は自分のスクリプトのためにそれらを必要としません。

ありがとうございます!

答えて

1

あなたは許可されていることを、どのようにについては、この

source <(sed '9,16d' "$dir"/.env) 
+0

.envファイルをソース、私は、設定されたすべての変数が届きません。私の例の変数DB_NAMEはもう働きません。エラーは消えました。 –

+0

変数が9行目から16行目の間にないのは確かですか? –

+0

はい。上記の正確なファイルを使用しています。ソースの出力を画面にダンプする方法はありますか?私が使用しているコードは次のとおりです: ソース<(sed '9,16d' "$ dir" /。env) echo "データベース:$ DB_NAME" –

0

ようsourceコマンドを使用する.so sedを使用して、単一引用符でこれらをラップライン9,16を除外することができます。

DB_NAME=zgwb 
DB_USER=root 
DB_PASSWORD= 
DB_HOST=localhost 
WP_ENV=development 
WP_HOME=http://zgwb.app 
WP_SITEURL=${WP_HOME}/wp 


AUTH_KEY='Jg.Q(zUJL_Mva+Fg&[email protected]/4-I9|nffhW]Hdu){7c}YH=CSDZ$bGL??tH7sU$y' 
SECURE_AUTH_KEY='2wj:zE^l?*/Xl~}4tLEu*&t&/[email protected]~K*<p%LB4x,{9ygOcAr|>1p/#48g' 
LOGGED_IN_KEY='pD#e%R=+tDt]1m9xL^@Nc~N+R3~quYwJ>:O3NHV7!%Sz>oWA`u$,ko{1*$(?ybIn' 
NONCE_KEY='?]&Mrzg~aYo~$!p3=`XdeI5_iK-GMqTKax[rW`gXPvMp,1)}RD~W#UE_+moDC8%D' 
AUTH_SALT=',YUPP1a+]Mg&b}2TqRc`|[email protected]+T<v_W:mPU6=/v=>gE;[G_M}?+>~`v0-%OcX/|9MU' 
SECURE_AUTH_SALT='DERZxF51AP;i>-h(8/8`XQ5|Tq:S}Jaq%R^?]I0l]Vt#CBR?yn~[3U[k!(2Xp2%`' 
LOGGED_IN_SALT='hQ~+}Qc!|wJBY<A]ap64!P%IvE=L.6Cbkr,/8;77sd:&+w0=MuWj!yR,3JEXd6Zo' 
NONCE_SALT='{SlTN(n5[jI$G:5(qp>>OG-e&l1)*n.35gjg{[email protected]$ebTuqHj4%`8Rbxy)KtJd' 

、その後、私はこのルールを使用する場合

source ./t.env 

echo $DB_NAME 
echo $DB_USER 
echo $DB_PASSWORD 
echo $DB_HOST 
echo $WP_ENV 
echo $WP_HOME 
echo $WP_SITEURL 

echo $AUTH_KEY 
echo $SECURE_AUTH_KEY 
echo $LOGGED_IN_KEY 
echo $NONCE_KEY 
echo $AUTH_SALT 
echo $SECURE_AUTH_SALT 
echo $LOGGED_IN_SALT 
echo $NONCE_SALT 
関連する問題