Avatar billede cht22 Professor
02. april 2024 - 11:15 Der er 6 kommentarer og
2 løsninger

BASH script if sætning fejler MySQL oprettelse af bruger

Jeg har lavet følgende script som virker fint:

Fil start ua.sh

#!/bin/bash

echo "Opretter bruger i MySQL database og opretter database"

echo "Brugernavn skal angives som argument. Eksempel: sh ua.sh ftpuser"

USER="$1"

mysql -u root <<MYSQL_SCRIPT
CREATE DATABASE $USER;
CREATE USER '$USER'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON $USER.* TO '$USER'@'localhost';
FLUSH PRIVILEGES;
MYSQL_SCRIPT

echo "MySQL USER and database created."
Fil end ua.sh

Men hvis jeg tilføjer en if-sætning for at kontrollere om, der er indtastet brugernavn, så fejler det:

Fil start ua.sh

#!/bin/bash

echo "Opretter bruger i MySQL database og opretter database"

echo "Brugernavn skal angives som argument. Eksempel: sh ua.sh ftpuser"

if "$1" = "" then
        echo "Der er ikke angivet brugernavn"
    else

USER="$1"

mysql -u root <<MYSQL_SCRIPT
CREATE DATABASE $USER;
CREATE USER '$USER'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON $USER.* TO '$USER'@'localhost';
FLUSH PRIVILEGES;
MYSQL_SCRIPT

echo "MySQL USER and database created."

fi
Fil end ua.sh


Jeg har kigget på følgende side:
https://askubuntu.com/questions/1414191/syntax-error-unexpected-expecting-then

Der står at hvis man bruger carriage return efter then, så opstår der fejl. Men hvordan undgår man så  carriage return efter then.
Avatar billede ejvindh Ekspert
02. april 2024 - 11:30 #1
Jeg tror pointen er, at du skal holde øje med, hvordan du gemmer linjeskift i din fil. Linux/unix kører udelukkende med LF, hvorimod man i windows typisk kører med LF/CR -- hvilket giver problemer i et bash-script.

Hvordan du undgår at den gemmer i windows-formatet afhænger lidt af hvilken editor, du bruger. Ofte kan man vælge det, når man gemmer. I nogle editors kan du også konvertere linje-endelserne inde i brugerfladen.

Du kan også evt. prøve at køre filen igennem kommandolinjeværktøjer som fromdos eller dos2unix, hvis du har dem installeret.
Avatar billede ejvindh Ekspert
02. april 2024 - 11:32 #2
Muligvis kan denne side også hjælpe dig:
https://app.execeratics.com/LFandCRLFonline/?l=en
Avatar billede cht22 Professor
02. april 2024 - 11:51 #3
Jeg får stadigvæk fejl. Jeg har både prøvet at konvertere filen med den side du henviser til og jeg har prøvet at redigere filen med vim i Ubuntu Server.

Nu får jeg bare følgende fejl meddelelse i stedet for:

Syntax error: end of file unexpected (expecting "then")
Avatar billede cht22 Professor
02. april 2024 - 12:37 #4
Nu har jeg redigeret det lidt ved brug af vim i Ubuntu Server og det ser ud til at virke.

Jeg får dog en fejl meddelelse:
ua.sh: 7: [ftpuser6: not found


#!/bin/bash

echo "Opretter bruger i MySQL database og opretter database"

echo "Brugernavn skal angives som argument. Eksempel: sh ua.sh ftpuser"

if ["$1" = ""];
then
{
echo "Der er ikke angivet brugernavn"
}
else
{
USER="$1"

mysql -u root <<MYSQL_SCRIPT
CREATE DATABASE $USER;
CREATE USER '$USER'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON $USER.* TO '$USER'@'localhost';
FLUSH PRIVILEGES;
MYSQL_SCRIPT

echo "MySQL USER and database created."
}
fi
Avatar billede cht22 Professor
02. april 2024 - 12:56 #5
Det ser ud til det kunne klares med mellemrum i linjen:

if [ "$1" = "" ];
Avatar billede ejvindh Ekspert
02. april 2024 - 12:56 #6
Dette problem kan jeg ikke hjælpe dig videre med :-)
Avatar billede ejvindh Ekspert
02. april 2024 - 12:57 #7
Nå, du løste det selv :)
Avatar billede cht22 Professor
02. april 2024 - 14:57 #8
Ja jeg fik løst det selv og det virker helt som det skal og jeg har også fået tilføjet oprettelse af brugeren på serveren, så der er ftp forbindelse.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester