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