echoでの引数の引数の結合

echoでの引数の引数の結合

私の環境では、次のスクリプトを使用して以下を実行します。

  1. Nginx サイト構成を作成します。
  2. 対応する Let'sEncrypt SSL 証明書を生成します。
  3. sites-default私のディレクトリとサイト構成の間にシンボリックリンクを作成します。
  4. サーバーを再起動します。

私のコード:

#!/bin/sh
for domain; do
    > "/etc/nginx/sites-available/${domain}.conf" cat <<EOF
        server {
            root /var/www/html/${DOMAIN};
            server_name ${DOMAIN} www.${DOMAIN};

            location ~ /\.ht {
                deny all;
            }

            location / {
                index index.php index.html index.htm fastcgi_index;
                try_files $uri $uri =404 $uri/ /index.php?$args;
            }

            location ~*  \.(jpg|jpeg|png|gif|ico|css|js|ttf|woff|pdf)$ {
                expires 365d;
            }

            location ~ \.php$ {
                fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
            }
        }
    EOF
    sudo ln -s /etc/nginx/sites-available/${domain} /etc/nginx/sites-enabled/
    #########################################################################
    certbot --nginx -d ${DOMAIN} -d www.${DOMAIN}
done
systemctl restart nginx.service # Create Webapp Substrate.

このコードを改善する方法と理由は次のとおりです。

長いハッシュマーク行があるところに次のコマンドを挿入したいと思います。

echo 'create database ${DOMAIN}; create user "${DOMAIN}"@"localhost" identified by "mypassword"; grant all privileges on ${DOMAIN}.* to ${DOMAIN};' | mysql -u root -p

このコマンドを追加すると、スクリプトは手順4の代わりに手順5を実行するように変更されます。

  1. Nginx サイト構成を作成します。
  2. 対応する Let'sEncrypt SSL 証明書を生成します。
  3. sites-default私のディレクトリとサイト構成の間にシンボリックリンクを作成します。
  4. localhostでのみ機能し、同じ名前のデータベースを持つすべての権限を持ち、認証されたデータベースユーザーを追加します。
  5. サーバーを再起動します。

私の質問:

ご覧のとおり、${DOMAIN}私はecho〜しなければならないここでも同じパラメータを渡します。そうしないと、データベースのユーザー名または関連データベースが自分のサイト構成に合わず、WordPressベースのサイトが起動しなくなります。

Bashでこれは論理的ですか?それとも別のアプローチをとりますか?

これを明確にするためにパラメータがecho

ベストアンサー1

これを行うには、以下を行う必要はありませんecho

mysql -u root -ppass <<EOF
  create database ${DOMAIN};
  create user "${DOMAIN}"@"localhost" identified by "mypassword";
  grant all privileges on ${DOMAIN}.* to ${DOMAIN};
EOF

トピックを見るなぜprintfがechoより優れているのですか?

おすすめ記事