bash 파일에 여러 줄 변수 추가

bash 파일에 여러 줄 변수 추가

phpmyadmin을 구성하기 위해 bash 스크립트를 작성하려고 합니다. config.inc.php 파일을 생성하고 여기에 구성 파일을 추가하려고 합니다. 파일에는 이 함수와 함께 복어 비밀이 포함되어 있습니다. $(openssl rand -base64 50)파일은 생성되지만 생성되지는 않습니다. 추가합니다. 결과가 파일에 $(openssl rand -base64 50)추가됩니다 .$(openssl rand -base64 50)

이것은 코드입니다

phpmyadmin_config='
<?php
declare(strict_types=1);
$cfg["blowfish_secret"] = "$(openssl rand -base64 50)";
$i = 0;
$i++;
$cfg["Servers"][$i]["auth_type"] = "cookie";
$cfg["Servers"][$i]["host"] = "localhost";
$cfg["Servers"][$i]["compress"] = false;
$cfg["Servers"][$i]["AllowNoPassword"] = false;
$cfg["UploadDir"] = "";
$cfg["SaveDir"] = "";
$cfg["TempDir"] = "/var/lib/phpmyadmin/tmp";
'
echo -e "$phpmyadmin_config" >> /usr/share/phpmyadmin/config.inc.php

내가 뭘 잘못했는지 말해주세요.

답변1

이렇게 쉘을 이용해서여기 - 문서:

cat<<EOF1 > /usr/share/phpmyadmin/config.inc.php
<?php
declare(strict_types=1);
\$cfg["blowfish_secret"] = "$(openssl rand -base64 50 | tr -d '\n')";
EOF1

cat<<'EOF2' >> /usr/share/phpmyadmin/config.inc.php
$i = 0;
$i++;
$cfg["Servers"][$i]["auth_type"] = "cookie";
$cfg["Servers"][$i]["host"] = "localhost";
$cfg["Servers"][$i]["compress"] = false;
$cfg["Servers"][$i]["AllowNoPassword"] = false;
$cfg["UploadDir"] = "";
$cfg["SaveDir"] = "";
$cfg["TempDir"] = "/var/lib/phpmyadmin/tmp";
EOF2

작은따옴표 안에는 변수를 확장할 수 없습니다.

쉘에서 올바르게 인용하는 방법을 배우는 것은 매우 중요합니다.

공백/메타 문자를 포함하는 모든 리터럴은 "큰따옴표"로 처리합니다.모든확장: "$var", "$(command "$var")", "${array[@]}", "a & b". 'single quotes'코드나 텍스트 $'s: 'Costs $5 US'에 대해서는 ssh host 'echo "$HOSTNAME"'을 참조하십시오.
http://mywiki.wooledge.org/Quotes
http://mywiki.wooledge.org/Arguments
http://wiki.bash-hackers.org/syntax/words

관련 정보