Enquanto /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 MYSQL heredocument.
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
Após colocar o arquivo em execução, executei o próprio arquivo que contém a função, passando um ${domain}
argumento para read
.
Vamos supor que esse argumento seja:
example.com
Meu problema
Para fins de teste, executei novamente o cat
criador do heredocument, mas agora, em vez disso, coloquei este 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
html/example.com
De onde vêm essas cordas? Tenho a sensação de que tem a ver com read
alguma coisa, como se o valor de alguma variável estivesse "preso" na memória, mas não sei como rastrear a variável por seu valor e não tenho ideia de como descobrir a fonte dessas cordas.
Eu tentei fazer domain=''
e reexecutar o cat
heredocument novamente, mas ainda assim o mesmo resultado sai. Dado que o cat
heredocument não permite expansão variável devido a aspas duplas ("EOT"), sinto-me ainda mais estranho com isso.
Sou bastante novo no Bash e não tenho muita experiência em trabalhar com variáveis (nunca fez parte dos cursos que fiz). Talvez você possa aconselhar.
Atualização --- resolvi o problema sem entender como:
Após executar no console exec bash
, tentei repetir o padrão normal de execução DWA_INSTALL
e desta vez o arquivo foi criado sem o problema do html/example.com
. Não sei porque, mas ajudou.
Resolvi o problema sem entender como:
Para limpar todas as variáveis que não são de ambiente (ou seja, todas as variáveis que eu mesmo declarei), executei no console:
Tentei então repetir o padrão regular de execução
DWA_INSTALL
e desta vez o arquivo foi criado sem o problema dashtml/example.com
preliminares.Não sei por que, mas ajudou; Por favor, edite esta resposta com uma explicação se você descobriu o que aconteceu lá.