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.