envファイルの各値に二重引用符を追加する方法

envファイルの各値に二重引用符を追加する方法

.env.shファイルにコピーする必要がある.envファイルがあります。このコマンドは .env.sh ファイルにエクスポートします。

scriptPath=$(dirname "$(readlink -f "$0")")
printenv | sed 's/^\(.*\)$/export \1/g' > ${scriptPath}/.env.sh

私の.envファイル:

DB_MYSQL_TYPE=mysql
DB_MYSQL_CONNECTOR=pymysql
DB_MYSQL_USER=tuandc
DB_MYSQL_PASS=mypass
DB_MYSQL_HOST=mysql.host
DB_MYSQL_PORT=3306
DB_MYSQL_DBNAME=vietnam

.env.shにエクスポートしました。

export DB_MYSQL_TYPE=mysql
export DB_MYSQL_CONNECTOR=pymysql
export DB_MYSQL_USER=tuandc
export DB_MYSQL_PASS=mypass~.(?Tweg
export DB_MYSQL_HOST=mysql.host
export DB_MYSQL_PORT=3306
export DB_MYSQL_DBNAME=vietnam

しかし、DB_MYSQL_PASSでいくつかの特殊文字をエスケープするために二重引用符を使用したいと思います。

printenv | sed -e 's/=\(.*\)/="\1/g' -e 's/$/"/g' >> ${scriptPath}/.env.sh
DB_MYSQL_TYPE="mysql"
DB_MYSQL_CONNECTOR="pymysql"
DB_MYSQL_USER="tuandc"
DB_MYSQL_PASS="mypass~.(?Tweg"
DB_MYSQL_HOST="mysql.host"
DB_MYSQL_PORT="3306"
DB_MYSQL_DBNAME="vietnam"

しかし、上記の2つの正規表現を組み合わせて、次のように.env.shファイルを完成させたいと思います。

export DB_MYSQL_TYPE="mysql"
export DB_MYSQL_CONNECTOR="pymysql"
export DB_MYSQL_USER="tuandc"
export DB_MYSQL_PASS="mypass~.(?Tweg"
export DB_MYSQL_HOST="mysql.host"
export DB_MYSQL_PORT="3306"
export DB_MYSQL_DBNAME="vietnam"

ベストアンサー1

$ declare -px

declare適切に見えるBashの組み込みコマンドです。このコマンドは、既存の変数割り当てからシェル特殊文字をエスケープします。

おすすめ記事