Enquanto em /var/www/html
eu executei o seguinte cat
heredocument que serve como um criador - Faz o arquivo /opt/dwa.sh
que inclui uma função e um documento MYSQL.
cat <<-"DWA_INSTALL" > /opt/dwa.sh
#!/bin/bash
DWA() {
test='test'
read domain
cp -rv /var/www/html/${domain} /var/www/html/${test}
sed -i 's/${domain}/${test}'/g /var/www/html/test/wp-config.php
sed -i 's/${domain}/${test}'/g /var/www/html/test/wp-config.php
mysql --force -u root -p <<-MYSQL
CREATE user '${test}'@'localhost' IDENTIFIED BY '${psw}';
CREATE database ${test};
GRANT ALL PRIVILEGES ON ${test}.* TO ${test}@localhost;
MYSQL
}
DWA
DWA_INSTALL
Depois de executar o arquivo, executei o próprio arquivo que contém a função, passando um argumento ${domain}
para read
.
Vamos supor que esse argumento seja:
example.com
Meu problema
Para fins de teste, eu re-executei o criador cat
heredocument, mas agora, em vez disso, obtive esse conteúdo dentro de dwa.sh
:
#!/bin/bash
DWA() {
test='test'
read domain
cp -rv /var/www/html/${domain} /var/www/html/${test}
sed -i 's/${domain}/${test}'/g /var/www/html/test/wp-config.php
sed -i 's/${domain}/${test}'/g /var/www/html/test/wp-config.php
mysql --force -u root -p <<-MYSQL
CREATE user '${test}'@'localhost' IDENTIFIED BY '${psw}';
CREATE database ${test};
GRANT ALL PRIVILEGES ON ${test}.* TO ${test}@localhost;
MYSQL
}
DWA
Eu tenho isso, dentro dele:
html/example.com/#!/bin/bash
html/example.com/html/example.com/DWA() {
html/example.com/test='test'
html/example.com/
html/example.com/read domain
html/example.com/cp -rv /var/www/html/${domain} /var/www/html/${test}
html/example.com/sed -i 's/${domain}/${test}'/g /var/www/html/test/wp-config.php
html/example.com/sed -i 's/${domain}/${test}'/g /var/www/html/test/wp-config.php
html/example.com/mysql --force -u root -p <<-MYSQL
html/example.com/CREATE user '${test}'@'localhost' IDENTIFIED BY '${psw}';
html/example.com/CREATE database ${test};
html/example.com/GRANT ALL PRIVILEGES ON ${test}.* TO ${test}@localhost;
html/example.com/MYSQL
html/example.com/}
html/example.com/DWA
Minha pergunta
De onde vêm essas sequências de html/example.com
? Eu tenho a sensação de que tem a ver com read
de alguma forma, como se o valor de alguma variável estivesse "preso" na memória, mas eu não sei como rastrear a variável pelo seu valor e não tenho idéia de como encontrar a fonte dessas strings.
Eu tentei executar domain=''
e executar novamente o cat
heredocument novamente, mas o mesmo resultado é exibido. Dado o cat
heredocument não permite expansão de variável devido a aspas duplas ("EOT"), eu me sinto ainda mais estranho com isso.
Sou muito novo no Bash e não tenho muita experiência em trabalhar com variáveis (nunca fiz parte dos cursos que fiz). Talvez você possa aconselhar.
Atualização --- resolvi o problema sem entender como:
Após a execução no console exec bash
, tentei repetir o padrão regular de execução DWA_INSTALL
e, desta vez, o arquivo foi criado sem o problema do html/example.com
. Eu não sei porque, mas ajudou.